- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
浅谈个人在瀑布流网页的实现中遇到的问题和解决方法
浅谈个人在瀑布流网页的实现中遇到的问题和解决方法
来源:百度影音
先上Demo
瀑布流排序 : /baidu.xml
瀑布流+无限拖/google.xml
随着pinterest的走红,瀑布流式的布局被越来越多的网站所使用,这种布局确实有很多好处,图片列表页有很强大的视觉感染力,而且还提高了用户“发现好图”的效率。瀑布流的实现有很多种方式,之前淘宝UED有篇文章详细的介绍过各种方式的优劣。今天我们主要讨论一下绝对排序来实现瀑布流的方式 即 Pinterest 采用的方式。
首先说下瀑布流的排序算法,参考demo1,思路非常简单,我们把瀑布流拆成三个部分来看:容器、列、格子
1.先计算当前屏幕最多能容纳几列瀑布,其值为 向下取整(屏幕可见区域宽度/(格子宽度+间距));
2.为了保证容器的居中,将容器的宽度设置为 列数* (格子宽度+间距) – 间距,这里需要注意的是 当容器的宽度计算出来之后再显示,否则会造成页面宽度的抖动,影响体验。;
3.排序开始,先把前N(N为列数)个格子分别放到每一列中,然后每次寻找高度最小的一列,把格子放进去(left值为列序号*(格子宽度+间距),top值为 列高+间距),并刷新列的高度,遍历所有格子直到所有的格子都被排序。
最后将事件句柄绑定到window.onload和window.onresize上,一个瀑布流布局的页面就出来了。
这样的排序算法看起来很美好,可真正结合异步加载数据应用到页面里还要解决以下几个问题
1.当缩放浏览器窗口时会不断地触发事件,如果每次都响应的话会狂耗性能,需要在缩放动作结束后再执行重排方法。
2.页面滚动到底部请求数据成功之后只对新增的节点重排。
3.如果服务器无法给出图片高度,需要在图片加载完毕之后再进行重排。
第一个问题我是用setTimeout和clearTimeout来解决的,思路是窗口变化之后开始计时,如果窗口还在变换则从新开始计时,窗口不再变化则延时(很短的时间)触发重排事件。暂时只想到这个,这里应该还有更好的方法。
代码如下
var re;
window.onresize = function() {
clearTimeout(re);
re = setTimeout(resize,100);
};
第二个问题在于如果每次有新的数据加载,都要对整个容器内的节点进行重排,非常消耗性能。解决思路:
1.将列保存在全局数组中,每次重排或者新增格子之后更新数组的数据,这样下次执行排序算法的时候可以直接调用。高清MV
2.将新增格子保存在数组中作为参数传递给排序算法,仅对新格子进行遍历和操作。
第三个问题是如果服务器无法给出图片尺寸,那么必须在图片完全加载完毕之后才可进
行排序(因为高度是实时获取的,图片不全高度有误差),这里没有什么好办法,只能遍历图片,每张图片加载成功后执行一个回调函数,将加载成功的图片数量+1,当加载成功的图片数量等于图片总数的时候执行排序方法。缺点是有一张图片加载不成共就无法看到所有的,真正项目中还是需要在异步加载数据的时候获取图片尺寸。
好了,以上就是在这次瀑布流实现过程中遇到的问题和解决方法,由一开始加载3-4屏就卡死到现在可以无限加载(ff,chrome),深感优化js的必要性和无限性。一点小心得写在这里权当抛砖引玉,大家对瀑布流实现的优化有什么见解欢迎一起交流讨论
高清MTV
您可能关注的文档
- 欧洲银行人才短缺.doc
- 欧洲风能技术论文52_Clean_Development_Mechanism_(CDM)_Funding_for_Windfarms.ppt
- 欧洲风能技术论文169_Financing_of_wind_power_developments_within_the_context_of_market_based_support_mechanisms_and_r.ppt
- 欧洲风能技术论文94_Demand_Response–A_New_Option_for_Wind_Integration.ppt
- 正佳广场执行全案.doc
- 欧版PPT模板.ppt
- 正商地产花都港湾项目后评估.ppt
- 正安城南新天整合推广策略.doc
- 正定农业技术市场招商方案.doc
- 正态分布原理.doc
最近下载
- 初中语文通用版 现代文阅读答题技巧(公式化模板 + 完整版提分攻略).docx VIP
- 期刊合作办刊协议书.docx VIP
- 驭胜s350维修手册及电路图n351整车电路图全.pdf VIP
- 混凝土热工计算软件.xls VIP
- 小学信息技术教学计划.docx VIP
- 八 观察物体(二)(单元教学设计)苏教版 三年级上册数学2025版.pdf
- 七上语文常考必背重点知识梳理总结(答案版)【2024新版】.pdf VIP
- 最全面总工会招聘考试工会知识模拟试卷及答案(共五套).docx
- 2020年总工会招聘考试工会知识模拟试卷及答案(一).docx VIP
- 2025最新初三英语中考模拟试卷(5套).docx VIP
原创力文档


文档评论(0)