pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

淺談瀑布流網頁實現(xiàn)中遇到的問題和解決方法

 

淺談瀑布流網頁實現(xiàn)中遇到的問題和解決方法 三聯(lián)

先上Demo

瀑布流排序 : http://cued.xunlei.com/demos/publ/demo1.html

瀑布流+無限拖 http://cued.xunlei.com/demos/publ/demo2.html

隨著pinterest的走紅,瀑布流式的布局被越來越多的網站所使用,這種布局確實有很多好處,圖片列表頁有很強大的視覺感染力,而且還提高了用 戶“發(fā)現(xiàn)好圖”的效率。瀑布流的實現(xiàn)有很多種方式,之前淘寶UED有篇文章詳細的介紹過各種方式的優(yōu)劣。今天我們主要討論一下絕對排序來實現(xiàn)瀑布流的方式 即 Pinterest 采用的方式。

首先說下瀑布流的排序算法,參考demo1,思路非常簡單,我們把瀑布流拆成三個部分來看:容器、列、格子

1.先計算當前屏幕最多能容納幾列瀑布,其值為 “向下取整(屏幕可見區(qū)域寬度/(格子寬度+間距))”;

2.為了保證容器的居中,將容器的寬度設置為 列數(shù)* (格子寬度+間距) – 間距,這里需要注意的是 當容器的寬度計算出來之后再顯示,否則會造成頁面寬度的抖動,影響體驗。;

3.排序開始,先把前N(N為列數(shù))個格子分別放到每一列中,然后每次尋找高度最小的一列,把格子放進去(left值為列序號*(格子寬度+間距),top值為 列高+間距),并刷新列的高度,遍歷所有格子直到所有的格子都被排序。

最后將事件句柄綁定到window.onload和window.onresize上,一個瀑布流布局的頁面就出來了。

這樣的排序算法看起來很美好,可真正結合異步加載數(shù)據(jù)應用到頁面里還要解決以下幾個問題

1.當縮放瀏覽器窗口時會不斷地觸發(fā)事件,如果每次都響應的話會狂耗性能,需要在縮放動作結束后再執(zhí)行重排方法。

2.頁面滾動到底部請求數(shù)據(jù)成功之后只對新增的節(jié)點重排。

3.如果服務器無法給出圖片高度,需要在圖片加載完畢之后再進行重排。

第一個問題我是用setTimeout和clearTimeout來解決的,思路是窗口變化之后開始計時,如果窗口還在變換則從新開始計時,窗口不再變化則延時(很短的時間)觸發(fā)重排事件。暫時只想到這個,這里應該還有更好的方法。

代碼如下

  var re;
window.onresize = function() {
clearTimeout(re);
re = setTimeout(resize,100);
};

第二個問題在于如果每次有新的數(shù)據(jù)加載,都要對整個容器內的節(jié)點進行重排,非常消耗性能。解決思路:

1.將列保存在全局數(shù)組中,每次重排或者新增格子之后更新數(shù)組的數(shù)據(jù),這樣下次執(zhí)行排序算法的時候可以直接調用。

2.將新增格子保存在數(shù)組中作為參數(shù)傳遞給排序算法,僅對新格子進行遍歷和操作。

第三個問題是如果服務器無法給出圖片尺寸,那么必須在圖片完全加載完畢之后才可進行排序(因為高度是實時獲取的,圖片不全高度有誤差),這里沒有什 么好辦法,只能遍歷圖片,每張圖片加載成功后執(zhí)行一個回調函數(shù),將加載成功的圖片數(shù)量+1,當加載成功的圖片數(shù)量等于圖片總數(shù)的時候執(zhí)行排序方法。缺點是 有一張圖片加載不成共就無法看到所有的,真正項目中還是需要在異步加載數(shù)據(jù)的時候獲取圖片尺寸。

好了,以上就是在這次瀑布流實現(xiàn)過程中遇到的問題和解決方法,由一開始加載3-4屏就卡死到現(xiàn)在可以無限加載(ff,chrome),深感優(yōu)化js的必要性和無限性。一點小心得寫在這里權當拋磚引玉,大家對瀑布流實現(xiàn)的優(yōu)化有什么見解歡迎一起交流討論。

作者:xwei

文章來源:迅雷CUED

 
【網站聲明】本站除付費源碼經過測試外,其他素材未做測試,不保證完整性,網站上部分源碼僅限學習交流,請勿用于商業(yè)用途。如損害你的權益請聯(lián)系客服QQ:2655101040 給予處理,謝謝支持。

相關文檔推薦

這篇文章給大家詳細介紹了HTML頁面跳轉及參數(shù)傳遞問題,需要的朋友參考下吧
這篇文章主要介紹了純css實現(xiàn)照片墻3D效果的示例代碼,可以實現(xiàn)鼠標經過圖片實現(xiàn)改變,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本篇文章主要介紹了純 Css 繪制扇形的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
本篇文章主要介紹了一份純CSS loading效果代碼示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
這篇文章主要介紹了css 實現(xiàn)文字過長自動隱藏功能,需要的朋友可以參考下
本篇文章主要介紹了詳解CSS3 rem(設置字體大小) 教程,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
主站蜘蛛池模板: 沈阳真空机_沈阳真空包装机_沈阳大米真空包装机-沈阳海鹞真空包装机械有限公司 | 长沙广告公司|长沙广告制作设计|长沙led灯箱招牌制作找望城湖南锦蓝广告装饰工程有限公司 | 塑木弯曲试验机_铜带拉伸强度试验机_拉压力测试台-倾技百科 | 深圳市简易检测技术有限公司 | 杭州高温泵_热水泵_高温油泵|昆山奥兰克泵业制造有限公司 | 高博医疗集团上海阿特蒙医院| hc22_hc22价格_hc22哈氏合金—东锜特殊钢 | BESWICK球阀,BESWICK接头,BURKERT膜片阀,美国SEL继电器-东莞市广联自动化科技有限公司 | 黑龙江京科脑康医院-哈尔滨精神病医院哪家好_哈尔滨精神科医院排名_黑龙江精神心理病专科医院 | 郑州宣传片拍摄-TVC广告片拍摄-微电影短视频制作-河南优柿文化传媒有限公司 | 沈阳庭院景观设计_私家花园_别墅庭院设计_阳台楼顶花园设计施工公司-【沈阳现代时园艺景观工程有限公司】 | 粉末包装机,拆包机厂家,价格-上海强牛包装机械设备有限公司 | 环比机械| 广州昊至泉水上乐园设备有限公司 | 东莞韩创-专业绝缘骨架|马达塑胶零件|塑胶电机配件|塑封电机骨架厂家 | 大功率金属激光焊接机价格_不锈钢汽车配件|光纤自动激光焊接机设备-东莞市正信激光科技有限公司 定制奶茶纸杯_定制豆浆杯_广东纸杯厂_[绿保佳]一家专业生产纸杯碗的厂家 | loft装修,上海嘉定酒店式公寓装修公司—曼城装饰 | 铝箔袋,铝箔袋厂家,东莞铝箔袋,防静电铝箔袋,防静电屏蔽袋,防静电真空袋,真空袋-东莞铭晋让您的产品与众不同 | 长沙发电机-湖南发电机-柴油发电机供应厂家-长沙明邦智能科技 | 亿诺千企网-企业核心产品贸易| 不锈钢/气体/液体玻璃转子流量计(防腐,选型,规格)-常州天晟热工仪表有限公司【官网】 | 大立教育官网-一级建造师培训-二级建造师培训-造价工程师-安全工程师-监理工程师考试培训 | ◆大型吹塑加工|吹塑加工|吹塑代加工|吹塑加工厂|吹塑设备|滚塑加工|滚塑代加工-莱力奇塑业有限公司 | 臭氧灭菌箱-油桶加热箱-原料桶加热融化烘箱-南京腾阳干燥设备厂 臭氧发生器_臭氧消毒机 - 【同林品牌 实力厂家】 | 【MBA备考网】-2024年工商管理硕士MBA院校/报考条件/培训/考试科目/提前面试/考试/学费-MBA备考网 | 自动售货机_无人售货机_专业的自动售货机运营商_免费投放售货机-广州富宏主官网 | 微型驱动系统解决方案-深圳市兆威机电股份有限公司 | 海外整合营销-独立站营销-社交媒体运营_广州甲壳虫跨境网络服务 焊管生产线_焊管机组_轧辊模具_焊管设备_焊管设备厂家_石家庄翔昱机械 | 楼梯定制_楼梯设计施工厂家_楼梯扶手安装制作-北京凌步楼梯 | 冻干机(冷冻干燥机)_小型|实验型|食品真空冷冻干燥机-松源 | 阻垢剂,反渗透阻垢剂,缓蚀阻垢剂-山东普尼奥水处理科技有限公司 真空粉体取样阀,电动楔式闸阀,电动针型阀-耐苛尔(上海)自动化仪表有限公司 | 细石混凝土泵_厂家_价格-烟台九达机械有限公司 | 塑料撕碎机_编织袋撕碎机_废纸撕碎机_生活垃圾撕碎机_废铁破碎机_河南鑫世昌机械制造有限公司 | Win10系统下载_32位/64位系统/专业版/纯净版下载 | 北京开业庆典策划-年会活动策划公司-舞龙舞狮团大鼓表演-北京盛乾龙狮鼓乐礼仪庆典策划公司 | 暖气片十大品牌厂家_铜铝复合暖气片厂家_暖气片什么牌子好_欣鑫达散热器 | 东莞螺丝|东莞螺丝厂|东莞不锈钢螺丝|东莞组合螺丝|东莞精密螺丝厂家-东莞利浩五金专业紧固件厂家 | 强效碱性清洗剂-实验室中性清洗剂-食品级高纯氮气发生器-上海润榕科学器材有限公司 | 上海瑶恒实业有限公司|消防泵泵|离心泵|官网 | 单机除尘器 骨架-脉冲除尘器设备生产厂家-润天环保设备 | 铝镁锰板_铝镁锰合金板_铝镁锰板厂家_铝镁锰金属屋面板_安徽建科 |