浅谈个人在瀑布流网页的实现中遇到的问题和解决…
2012-04-13 17:51:45来源:[标签:来源] 阅读 ()
先上Demo
瀑布流排序 : http://cued.xunlei.com/demos/publ/demo1.html
瀑布流+无限拖 http://cued.xunlei.com/demos/publ/demo2.html
随着pinterest的走红,瀑布流式的布局被越来越多的网站所使用,这种布局确实有很多好处,图片列表页有很强大的视觉感染力,而且还提高了用户“发现好图”的效率。瀑布流的实现有很多种方式,之前淘宝UED有篇文章详细的介绍过各种方式的优劣。今天我们主要讨论一下绝对排序来实现瀑布流的方式 即 Pinterest 采用的方式。
首先说下瀑布流的排序算法,参考demo1,思路非常简单,我们把瀑布流拆成三个部分来看:容器、列、格子
1.先计算当前屏幕最多能容纳几列瀑布,其值为 "向下取整(屏幕可见区域宽度/(格子宽度+间距))";
2.为了保证容器的居中,将容器的宽度设置为 列数* (格子宽度+间距) – 间距,这里需要注意的是 当容器的宽度计算出来之后再显示,否则会造成页面宽度的抖动,影响体验。;
3.排序开始,先把前N(N为列数)个格子分别放到每一列中,然后每次寻找高度最小的一列,把格子放进去(left值为列序号*(格子宽度+间距),top值为 列高+间距),并刷新列的高度,遍历所有格子直到所有的格子都被排序。
最后将事件句柄绑定到window.onload和window.onresize上,一个瀑布流布局的页面就出来了。
这样的排序算法看起来很美好,可真正结合异步加载数据应用到页面里还要解决以下几个问题
1.当缩放浏览器窗口时会不断地触发事件,如果每次都响应的话会狂耗性能,需要在缩放动作结束后再执行重排方法。
2.页面滚动到底部请求数据成功之后只对新增的节点重排。
3.如果服务器无法给出图片高度,需要在图片加载完毕之后再进行重排。
第一个问题我是用setTimeout和clearTimeout来解决的,思路是窗口变化之后开始计时,如果窗口还在变换则从新开始计时,窗口不再变化则延时(很短的时间)触发重排事件。暂时只想到这个,这里应该还有更好的方法。
代码如下

var re;
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:站长不要紧抓一个关键词
- 秒针酷宝电商峰会上海场圆满落幕 品效合一助力企业跨入电商2 2015-05-21
- “杨部长座谈会&2015互联网+中国制造业高峰论坛”圆满闭 2015-06-10
- 秒针酷宝电商峰会上海场圆满落幕 品效合一助力企业跨入电商2 2015-05-21
- “杨部长座谈会&2015互联网+中国制造业高峰论坛”圆满闭 2015-06-10
- 秒针酷宝电商峰会上海场圆满落幕 品效合一助力企业跨入电商2 2015-05-21
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash
