摘要:本人博客正式地址騰訊新聞中心的首頁(yè)改版啦,歡迎訪問(wèn)。這次新聞首頁(yè)的改版,是從零開(kāi)始寫的一個(gè)新頁(yè)面。除要聞頁(yè)卡外,其他頁(yè)卡的新聞均是通過(guò)的方式獲取的??偨Y(jié)新頁(yè)面上線后,還會(huì)有很多后續(xù)的功能需要添加。
本人博客:http://www.xiabingbao.com
正式地址:http://www.xiabingbao.com/news/2016/05/16/qq-news-revision
騰訊新聞中心的首頁(yè)改版啦,歡迎訪問(wèn)【http://news.qq.com】。我是負(fù)責(zé)這次改版的前端開(kāi)發(fā)工程師,今天也從前端的角度分析一下改版的過(guò)程和效果。
我們先來(lái)看看改版前后的首屏效果:
從對(duì)比圖上來(lái)看,主要有以下的變化:
樣式更加簡(jiǎn)潔,刪除不必要的CSS裝飾
刪除額外的新聞介紹,更加突出新聞的標(biāo)題
頁(yè)面趨于扁平化
1. 網(wǎng)頁(yè)屬性和頭部信息我們來(lái)看看兩個(gè)頁(yè)面中頭部信息的設(shè)置
舊頁(yè)面:
新頁(yè)面:
主要的變化有:
頁(yè)面從html4.01的聲明改為了html5的聲明
字符編碼從gb2312改為UTF-8
優(yōu)先使用 IE 最新版本和 Chrome
2. 頁(yè)面優(yōu)化前幾個(gè)做的改版頁(yè)面,只是在原頁(yè)面上進(jìn)行了簡(jiǎn)單的CSS修改。這次新聞首頁(yè)的改版,是從零開(kāi)始寫的一個(gè)新頁(yè)面。因此自主權(quán)更大,能把優(yōu)化做到最大;不過(guò)因?yàn)楦鞣N客觀和主觀的原因,依然還有很大進(jìn)步的空間。
我在編寫頁(yè)面時(shí)盡量把CSS放在前面,js放到尾部。不過(guò)頁(yè)面里有很多公共的頁(yè)面片,只能include進(jìn)來(lái),因此這些頁(yè)面片里的js也跟著include進(jìn)來(lái)。
2.1 圖片懶加載在幾乎所有的頁(yè)面中,圖片是最拖延頁(yè)面加載的,之前的舊頁(yè)面在沒(méi)有任何懶加載的情況下,憑借著騰訊強(qiáng)大的服務(wù)器,也能快速的展示頁(yè)面。不過(guò),在新頁(yè)面里,除了首屏展示的圖片外,幾乎所有的圖片都使用了懶加載,當(dāng)用戶看到這個(gè)地方時(shí),才展示圖片。
圖片也是分塊加載的,滾動(dòng)到某個(gè)區(qū)域時(shí),才加載這個(gè)區(qū)域里所有的圖片。整個(gè)頁(yè)面從上往下分成了5個(gè)區(qū)域:
右側(cè)影像力的輪播圖: page_cnt_1
要聞的列表區(qū)后半部分(第14條-第46條): page_cnt_2
軍事|社會(huì)模塊: page_cnt_3
歷史|傳媒模塊: page_cnt_4
影像力模塊: page_cnt_5
對(duì)需要懶加載的圖片,把真實(shí)的圖片地址放到_src的屬性中,不要寫src屬性,因?yàn)閟rc的值為空時(shí)也會(huì)請(qǐng)求,或者為src設(shè)置一個(gè)1x1的占位圖片。
把整個(gè)頁(yè)面里的圖片劃分區(qū)域,每個(gè)區(qū)域按順序設(shè)置圖片的name屬性,值為page_cnt_{num},num從1開(kāi)始依次遞增不能有間斷:
當(dāng)滾動(dòng)條滾動(dòng)到當(dāng)前區(qū)域時(shí),則把a(bǔ)rea1區(qū)域里name的值是page_cnt_1的圖片都加載完成,而area2則在滾動(dòng)條再次滾動(dòng)到相應(yīng)的距離時(shí)才加載。
2.2 頁(yè)卡的新聞延遲加載在第3條新聞和第4條新聞中間有13個(gè)頻道的頁(yè)卡,用戶可以通過(guò)把鼠標(biāo)放到某個(gè)頁(yè)卡上獲取當(dāng)前頁(yè)卡的新聞,點(diǎn)擊頁(yè)卡時(shí)跳轉(zhuǎn)到相應(yīng)的頻道。除要聞頁(yè)卡外,其他頁(yè)卡的新聞均是通過(guò)ajax的方式獲取的。
考慮到用戶可能頻繁的切換頁(yè)卡,或者用戶可能只是想簡(jiǎn)單從第1個(gè)頁(yè)卡移動(dòng)到第5個(gè)頁(yè)卡。這種情況下,是沒(méi)有必要請(qǐng)求第2,3,4個(gè)頁(yè)卡里的內(nèi)容的。因此為頁(yè)卡切換設(shè)置了延時(shí)請(qǐng)求,當(dāng)鼠標(biāo)在當(dāng)前頁(yè)卡停留240ms以上,才認(rèn)為用戶確實(shí)想看這個(gè)頁(yè)卡的內(nèi)容,否則認(rèn)為鼠標(biāo)只是從當(dāng)前頁(yè)卡滑過(guò),而不是真的想看其內(nèi)容。
var timer_0 = null; $(".news .title").on("mouseenter", "a", function(){ // 若鼠標(biāo)放在當(dāng)前的頁(yè)卡上,不再重復(fù)請(qǐng)求 if( $(this).parent().hasClass("current") ){ return; } // 鼠標(biāo)hover到這個(gè)頁(yè)卡時(shí),取消上個(gè)頁(yè)卡的請(qǐng)求 timer_0 && clearTimeout(timer_0); var $self = $(this); timer_0 = setTimeout(function(){ // 開(kāi)始請(qǐng)求內(nèi)容 }, 240); }).on("mouseout", function(){ // 鼠標(biāo)離開(kāi)整個(gè)區(qū)域時(shí)也停止請(qǐng)求 timer_0 && clearTimeout(timer_0); });2.3 js、css、img壓縮
這3個(gè)都是最基本的優(yōu)化原則。背景圖片能合并的則合并,不能合并的則通過(guò)工具進(jìn)行壓縮,js和css也進(jìn)行相應(yīng)的壓縮。
3. 功能提升除了頁(yè)面基本的功能外,也還有其他的幾個(gè)亮點(diǎn)提升用戶的體驗(yàn)。
3.1 hover放大效果整個(gè)頁(yè)面左側(cè)的圖片,鼠標(biāo)hover時(shí)有放大的效果,這里是使用到了CSS3的transition屬性,因此在IE8及以下是看不到這種效果的。
img{ -webkit-transition: transform .2s ease-out; -moz-transition: transform .2s ease-out; -ms-transition: transform .2s ease-out; -o-transition: transform .2s ease-out; transition: transform .2s ease-out; } img:hover{ -webkit-transform: scale(1.1); -moz-transform: scale(1.1); -ms-transform: scale(1.1); -o-transform: scale(1.1); transform: scale(1.1); }3.2 影像力圖片的蒙層
在影像力模塊里,鼠標(biāo)hover時(shí)感覺(jué)會(huì)添加了一個(gè)蒙層效果,其實(shí)是圖片的透明度發(fā)生了變化:
.yingxiangli .con img { -webkit-transition: opacity 0.3s ease-out; -moz-transition: opacity 0.3s ease-out; -o-transition: opacity 0.3s ease-out; transition: opacity 0.3s ease-out; } .yingxiangli .con img:hover { opacity: 0.8; filter: alpha(opacity=80) }3.3 拖拽頁(yè)卡修改順序
頁(yè)卡的默認(rèn)順序是:財(cái)經(jīng)、體育、娛樂(lè)、房產(chǎn)...社會(huì)、教育。在“更多”的頁(yè)卡里有個(gè)排序選項(xiàng),可以在彈出框里修改頁(yè)卡的展示順序,讓自己更感興趣的頻道排在前面。
拖拽相應(yīng)的頻道,完成后保存即可。下次打開(kāi)頁(yè)面時(shí),就會(huì)展示之前拖拽好的順序。
其實(shí)在點(diǎn)擊“保存”后,程序會(huì)將調(diào)整后的頁(yè)卡順序保存到cookie中,以后每次打開(kāi)頁(yè)面時(shí),都會(huì)檢查是否存在這個(gè)cookie,若存在cookie則展示相應(yīng)的順序,否則展示頁(yè)卡的默認(rèn)順序。
4. 總結(jié)新頁(yè)面上線后,還會(huì)有很多后續(xù)的功能需要添加。在此也只是做個(gè)改版的階段性總結(jié),望大家批評(píng)改正。
本人博客:http://www.xiabingbao.com
正式地址:http://www.xiabingbao.com/news/2016/05/16/qq-news-revision
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/54340.html
摘要:本人博客正式地址騰訊新聞中心的首頁(yè)改版啦,歡迎訪問(wèn)。這次新聞首頁(yè)的改版,是從零開(kāi)始寫的一個(gè)新頁(yè)面。除要聞頁(yè)卡外,其他頁(yè)卡的新聞均是通過(guò)的方式獲取的??偨Y(jié)新頁(yè)面上線后,還會(huì)有很多后續(xù)的功能需要添加。 本人博客:http://www.xiabingbao.com 正式地址:http://www.xiabingbao.com/news/2016/05/16/qq-news-revision ...
摘要:第期新聞發(fā)布是熱門的通用服務(wù)器端的延伸框架,近日發(fā)布了版本。官方博客相關(guān)報(bào)導(dǎo)官網(wǎng)全新改版工具的官網(wǎng)近日全新改版上線,文檔與首頁(yè)都有全新的版面與改善。官方網(wǎng)站研習(xí)會(huì)報(bào)導(dǎo)是在月底,于歐洲的社群的一個(gè)研習(xí)會(huì)活動(dòng)。 第022期 (2017.04.02) 新聞 Next.js發(fā)布2.0 Next.js是熱門的通用(服務(wù)器端)的React延伸框架,近日發(fā)布了2.0版本。2.0的目標(biāo)有三個(gè),是針對(duì)...
摘要:日前,騰訊技術(shù)工程事業(yè)群數(shù)據(jù)中心負(fù)責(zé)人鐘遠(yuǎn)河在中國(guó)數(shù)據(jù)中心周接受澎湃新聞采訪時(shí)表示,目前中國(guó)百度阿里巴巴騰訊三家互聯(lián)網(wǎng)巨頭所擁有的數(shù)據(jù)中心服務(wù)器數(shù)量之和,還不及美國(guó)亞馬遜一家公司的一半。中國(guó)網(wǎng)民規(guī)模達(dá)7.31億,相當(dāng)于歐洲人口總量,是全球最大的互聯(lián)網(wǎng)市場(chǎng),但是中國(guó)數(shù)據(jù)中心的規(guī)模卻遠(yuǎn)遠(yuǎn)不及美國(guó),還有很多用戶沒(méi)有使用過(guò)云計(jì)算服務(wù)。日前,騰訊(00700.HK)技術(shù)工程事業(yè)群數(shù)據(jù)中心負(fù)責(zé)人鐘遠(yuǎn)河在...
摘要:日常生活中經(jīng)常可以遇到,有朋友通過(guò)微信向你分享今日頭條騰訊新聞等各大門戶的新聞,但是當(dāng)你點(diǎn)擊進(jìn)去查看完后,在點(diǎn)擊手機(jī)的返回鍵,發(fā)現(xiàn)不是直接返回的微信聊天界面,而是先返回到該新聞網(wǎng)站的首頁(yè),再次返回才到聊天界面。 日常生活中經(jīng)??梢杂龅?,有朋友通過(guò)微信向你分享今日頭條、騰訊新聞等各大門戶的新聞,但是當(dāng)你點(diǎn)擊進(jìn)去查看完后,在點(diǎn)擊手機(jī)的返回鍵,發(fā)現(xiàn)不是直接返回的微信聊天界面,而是先返回到該新...
摘要:金秋之后,便是寒冬。年就要過(guò)去了,這一年承載了太多的記憶,一個(gè)騰訊視頻,幫助我們記錄下來(lái)這些或難過(guò),或美好,或感動(dòng)的瞬間。有任何問(wèn)題,你可以通過(guò)以下方式找到我郵箱源碼,歡迎個(gè)人主頁(yè) 金秋之后,便是寒冬。2017年就要過(guò)去了,這一年承載了太多的記憶,一個(gè)騰訊視頻demo,幫助我們記錄下來(lái)這些或難過(guò),或美好,或感動(dòng)的瞬間。 一個(gè)仿騰訊視頻的小程序: 開(kāi)發(fā)工具: 微信開(kāi)發(fā)者工具 小程序開(kāi)...
閱讀 1193·2021-11-22 13:53
閱讀 1765·2021-11-17 09:33
閱讀 2525·2021-10-14 09:43
閱讀 3087·2021-09-01 11:41
閱讀 2499·2021-09-01 10:44
閱讀 3184·2021-08-31 09:39
閱讀 1657·2019-08-30 15:44
閱讀 1978·2019-08-30 13:02