嫩草影院久久99_老司机午夜网站国内精品久久久久久久久_久久夜色精品国产_国产一级做a爰片久久毛片

瀑布流布局的開發(fā)實踐

2013-5-14   

轉(zhuǎn)載藍藍設(shè)計(   m.sdgs6788.com  )是一家專注而深入的設(shè)計機構(gòu) ,為期望卓越的國內(nèi)外企業(yè)提供有效的   BS界面設(shè)計 、 cs界面設(shè)計 、  ipad界面設(shè)計   、  包裝設(shè)計 、  圖標(biāo)定制 、  用戶體驗 、交互設(shè)計、   網(wǎng)站建設(shè) 、平面設(shè)計服務(wù)

來源:http://www.woshipm.com/design/24999.html

360圖片搜索的美女秀場

瀑布流的布局方式展現(xiàn)的內(nèi)容通常是扁平化、瑣碎的東西。首先吸引人的應(yīng)該是圖片,并且圖片是那種參差不齊的,如果瀑布流中文字過多,會給人很雜亂的感覺,所以瀑布流更適合單純的圖片瀏覽。

前不久360公司上線的項目–360圖片搜索的美女秀場頻道,就用到了瀑布流的布局方式,這種純粹的看美女圖片的頁面用瀑布流還是挺合適的。

以前并未開發(fā)過瀑布流布局的網(wǎng)站,第一個想到的實現(xiàn)方式就是多列浮動,從表面上看這種方式要簡單。

傳統(tǒng)的定位布局方式

但是,目前主流的瀑布流布局都是采用定位的方式,對每個單元格計算定位值,如下圖:

定位方式實現(xiàn)的瀑布流布局

定位的方式實現(xiàn)起來其實也簡單,在窗口 resize 時,也可以方便的對單元格進行重新計算排序。但是計算的頻率比較高,如果要做無限的加載數(shù)據(jù),以及 resize 時的自適應(yīng)排列,那么性能就是一個必須要重視的問題。

如果沒有任何優(yōu)化手段,成百上千個單元格本身就很耗資源,resize 時再全部重新計算一遍,可以想象瀏覽器在這個時候一定很吃力,必然會有瀏覽器假死的情況。

多列浮動的布局方式

再來看看多列浮動布局的實現(xiàn)方式,多個單元格組成一列,無需對單個的單元格進行定位的計算,然后對整列進行浮動,如下圖:

多列浮動方式實現(xiàn)的瀑布流布局

當(dāng)然,這種布局方式在無限加載和 resize 時的自適應(yīng)面前,面對著同樣的問題。

自適應(yīng)窗口

先說 resize 時的布局自適應(yīng),雖然浮動布局的計算沒有定位那么方便,但要實現(xiàn)自適應(yīng)的布局還是可以的。比如原來有 4 列,resize 時頁面寬度變小了,只能放 3 列了,單元格的總數(shù)是不變的,數(shù)據(jù)的順序也是固定的,那么只有把原來 4 列里面的單元格全部清空,按照數(shù)據(jù)的順序重新計算排序,依次添加到 3 列中。需要注意的是清空的時候并不是把單元格的 DOM 元素給刪除掉,而是從 DOM 樹提取出來存放在一個文檔碎片中,這樣就避免了每次都要去創(chuàng)建單元格的 DOM 元素,節(jié)省了創(chuàng)建時的性能開銷,說得通俗點就是離線操作。

無限加載的挑戰(zhàn)

瀏覽器中運行的 WEB 程序并不能像桌面軟件那樣會有足夠多的 CPU 和內(nèi)存去使用。當(dāng)網(wǎng)頁中的 DOM 元素的數(shù)量呈指數(shù)倍的增長,那么其占用的內(nèi)存也勢必會成正比的增長,每個 DOM 元素都會有性能開銷,只是通常情況下 DOM 的數(shù)量并沒有達到需要注意型性能的那個闕值。

無限加載的瀑布流就必須要注意這種由于 DOM 數(shù)量龐大而引發(fā)出來的性能問題。不能抱著僥幸的心理去認(rèn)為用戶可能滾動不了多長就會跳出。此次做的瀑布流布局的項目壓根就沒有內(nèi)頁,都是浮層直接展示大 圖,雖說在一定程度上方便了用戶,但同時也給瀏覽器端很大的性能壓力。用戶如果不需要跳轉(zhuǎn)一直停留在瀑布流的列表頁,只要不關(guān)閉這個頁面,內(nèi)存就會一直沒 有釋放的機會。

雖然頁面可以無限長,但是用戶的顯示器的可視區(qū)域是有限的,就好比一個再富有的人,他晚上睡覺時占的面積還是那么大,床的面積也是有限的。由于可視 區(qū)域是有限的,通常會利用這一點對沒加載的 DOM 元素作延遲加載,那么反過來,能否對已加載的但不在可視區(qū)域的 DOM 元素做文章呢?答案是肯定的,人有多大膽,地有多大產(chǎn)嘛。

當(dāng)頁面向下滾動的時候,瀑布流會創(chuàng)建新的單元格,老的單元格就會隨著頁面的向下滾動而處于非可視范圍,既然都不可見了,那么為了節(jié)省性能完全可以把 這些老單元格刪除掉。當(dāng)然,也要有技巧性的去刪除。如果頁面往上滾,滾回去的時候你總不能給用戶看白板,不能這樣坑人。那么原來刪除的還得保持原位置加回 去。不悠著點的話,光是這樣一刪一加的兩個動作就夠瀏覽器受的了。作為 WEB 開發(fā)者,要時刻都有瀏覽器是很脆弱的如芒在背的心理。

分組操作

上面說到的有技巧性的刪除就是將那些處于非可視區(qū)域的 DOM 元素從 DOM 樹中提取出來,存儲在一個文檔碎片的容器中。DOM 元素脫離了 DOM 樹也會大大節(jié)省性能的開銷,這樣就達到了節(jié)省性能的目的。當(dāng)然如果僅僅只做到這一步還不太好意思說是技巧。正是因為這個,我將 HTML 結(jié)構(gòu)再包裹一層,在 ul 外面添加了一個div ,稱之為一組,其真實結(jié)構(gòu)如下圖所示。

在這里,組是比列更大的單位,一組可以是可視區(qū)域大小的尺寸( 目前組還沒到針對不同的分辨率 ),一組里面就是浮動的自適應(yīng)屏幕分辨率的幾列,每列里面就是一個個的單元格。如上圖,這樣幾列就可以組成一組。有了組就可以比較方便的將頻繁出入于 DOM 樹中的 DOM 元素的性能開銷平衡的分配到每一組??梢栽陧撁鏉L動向下到指定的位置,只刪除某一組,繼續(xù)向下滾再繼續(xù)刪除。每次都刪除處于最頂端的那一組,因為是在非可 視區(qū)域內(nèi),用戶也不會知道你的刪除操作。

頁面的高度是由一個個單元格給撐起來的,刪除了單元格后,其高度就會出現(xiàn)變化,由此就會導(dǎo)致頁面的高度也跟著變化。在刪除前計算出組元素的高度,然后設(shè)置其 visibility 為 hidden,讓其在刪除后還保留組元素原有的位置和高度,這樣就不會有高度的變化了。

通過的刪除非可視區(qū)域的 DOM 元素的優(yōu)化方法,可以讓頁面始終保持1-2組單元格,只要你組內(nèi)的單元格的數(shù)量能把握好。這樣就在一定程度上大大的緩解了了頁面中由于 DOM 數(shù)量過多而出現(xiàn)的性能開銷的問題。

當(dāng)窗口 resize 達到重新排序的寬度條件時,還是要將頁面中所有單元格重新計算排序。由于非可視區(qū)域的單元格已經(jīng)不在 DOM 樹中,那么其計算也沒什么壓力了。那些存儲在文檔碎片容器中的單元格也還是需要計算的,因為如果此時頁面往上滾動時那些離線的單元格還要重新和用戶見面 嘛,只是這個計算并不是在 DOM 樹中而已。

日歷

鏈接

個人資料

藍藍設(shè)計的小編 http://m.sdgs6788.com

存檔

嫩草影院久久99_老司机午夜网站国内精品久久久久久久久_久久夜色精品国产_国产一级做a爰片久久毛片
<em id="09ttv"></em>
    <sup id="09ttv"><pre id="09ttv"></pre></sup>
    <dd id="09ttv"></dd>

        • 日韩视频一区二区三区在线播放| 欧美a一区二区| 国产精品亚洲产品| 亚洲激情中文1区| 亚洲欧美日韩成人高清在线一区| 99国产精品视频免费观看| 亚洲一区二区三区在线视频| 亚洲综合大片69999| 久久精品观看| 欧美精品久久久久久久| 国产精品国产三级欧美二区 | 欧美激情精品| 欧美日本在线视频| 国产欧美日韩一区二区三区在线观看| 国产综合久久久久久| 亚洲精品乱码久久久久久蜜桃91| 亚洲午夜国产成人av电影男同| 欧美在线免费视屏| 亚洲欧洲在线看| 久久精品免费观看| 久久综合九色九九| 欧美日韩mv| 国产一区二区三区日韩| 亚洲精品一级| 久久久久久久一区二区三区| 亚洲国产视频a| 久久精品九九| 国产精品久久久久久久久久直播| 狠狠网亚洲精品| 亚洲调教视频在线观看| 日韩网站免费观看| 久久夜色精品| 亚洲欧美日韩区| 亚洲精品色图| 久久久水蜜桃| 国产日韩欧美一区二区| 亚洲视频福利| 91久久夜色精品国产九色| 久久福利视频导航| 国产精品乱码| 欧美日韩精品一区二区三区| 亚洲资源在线观看| 欧美高清视频免费观看| 国内在线观看一区二区三区| 欧美一二区视频| av成人免费| 欧美日本一道本在线视频| 亚洲国产精品一区二区久 | 亚洲婷婷综合色高清在线| 欧美aⅴ99久久黑人专区| 性久久久久久久| 国产精品久久久久久久久| 亚洲午夜极品| 正在播放欧美视频| 亚洲视频在线观看三级| 欧美久久九九| 最新69国产成人精品视频免费| 亚洲一区日韩| 亚洲激情在线激情| 欧美xx视频| 亚洲经典自拍| 亚洲电影在线播放| 一区二区三区免费在线观看| 亚洲一区二区三区四区在线观看 | 麻豆freexxxx性91精品| 1024国产精品| 亚洲国产精品va| 欧美精品激情blacked18| 99视频一区二区| 99精品国产在热久久下载| 欧美四级在线观看| 欧美一区二区三区视频在线观看| 欧美亚洲一区三区| 亚洲大胆人体在线| 一区二区三区视频在线| 亚洲视频1区| 国产夜色精品一区二区av| 另类酷文…触手系列精品集v1小说| 久久久亚洲影院你懂的| 亚洲精品国产精品久久清纯直播| 亚洲激情不卡| 国产精品嫩草久久久久| 欧美成人免费在线| 久久九九有精品国产23| 久久精品中文字幕一区| 亚洲国产视频a| 亚洲精品国产无天堂网2021| 国产精品xxxav免费视频| 欧美综合77777色婷婷| 久久久久久夜| 亚洲视屏在线播放| 欧美在线在线| 一本一本大道香蕉久在线精品| aa级大片欧美| 黄色在线成人| 亚洲免费福利视频| 黄色国产精品一区二区三区| 亚洲人成在线观看网站高清| 先锋影音久久久| 亚洲精品国产精品国自产观看浪潮| 亚洲一区二区三区视频播放| 亚洲国产专区校园欧美| 午夜精品一区二区在线观看| 亚洲青色在线| 久久国产精品亚洲77777| 亚洲无毛电影| 亚洲欧美欧美一区二区三区| 久久亚洲欧美国产精品乐播| 欧美日韩国产三区| 女主播福利一区| 国产精品永久入口久久久| 亚洲日本va午夜在线影院| 精品91在线| 国内在线观看一区二区三区| 亚洲国产欧洲综合997久久| 亚洲影院污污.| 亚洲午夜精品视频| 欧美激情偷拍| 欧美成人免费在线| 在线观看成人小视频| 香蕉免费一区二区三区在线观看| 亚洲一区二区动漫| 欧美日本一区二区高清播放视频| 在线欧美影院| 久久精品视频导航| 久久午夜精品一区二区| 国产麻豆午夜三级精品| 亚洲午夜在线观看视频在线| 日韩一级大片| 欧美日韩国产影片| 亚洲精品视频二区| 久久天天躁夜夜躁狠狠躁2022 | 国产一区二区三区四区hd| 亚洲素人一区二区| 亚洲一区二区三区激情| 欧美午夜三级| 日韩午夜在线观看视频| 一本一本久久a久久精品综合妖精| 免费高清在线视频一区·| 免费观看在线综合| 亚洲国产精品一区二区第一页| 老司机免费视频一区二区三区| 欧美14一18处毛片| 最新日韩在线视频| 欧美成人精品福利| 欧美成人网在线| 在线观看日韩av电影| 久久影院午夜片一区| 国产一区99| 久久亚洲一区二区| 91久久极品少妇xxxxⅹ软件| 亚洲免费成人| 国产精品一区二区你懂得| 欧美中文字幕| 蜜臀久久99精品久久久久久9| 亚洲激情影院| 一区二区成人精品| 男人的天堂成人在线| 亚洲经典三级| 欧美亚洲视频一区二区| 国产午夜精品视频| 蜜桃久久av一区| 99视频一区二区| 欧美专区在线播放| 亚洲人成人一区二区三区| 欧美日韩国产小视频在线观看| 亚洲综合好骚| 亚洲高清成人| 欧美一区=区| 亚洲精品美女在线| 国产精品呻吟| 欧美福利精品| 性做久久久久久久免费看| 欧美激情第9页| 国产午夜精品久久久久久免费视 | 午夜精品久久久久久99热| 蜜臀久久99精品久久久画质超高清| 亚洲国产精品va在线看黑人动漫 | 欧美不卡高清| 一区二区视频免费完整版观看| 一本大道久久精品懂色aⅴ| 久久久久久久成人| 亚洲一区二区三区四区五区黄| 在线国产日韩| 国产一区二区视频在线观看 | 欧美成人免费全部观看天天性色| 一区二区三区高清视频在线观看| 久久只有精品| 欧美在线免费| 亚洲一区在线观看免费观看电影高清| 伊人影院久久| 国产区精品在线观看| 国产精品第2页| 欧美激情第五页| 久热精品视频在线观看一区| 午夜精品三级视频福利| 亚洲无毛电影| 亚洲欧美日韩在线不卡| 亚洲精品日韩在线观看| 亚洲成色www久久网站|