深圳网站制作专业品牌! 联灿科技-深圳企业网站专业服务商 加入收藏
用户名: 密码: 注册
深圳市联灿科技有限公司深圳做网站,找联灿! 深圳网站设计热线 深圳网页设计在线咨询
技术交流
网站设计
网站优化
行业动态
 
深圳做网站,找联灿!
深圳市联灿科技有限公司成立于二零零四年,是家专业提供深圳网站制作深圳网页设计深圳网页制作深圳网站设计深圳网站开发、域名注册、虚拟主机、企业邮箱等服务的正规深圳做网站的公司,迄今已累积客户逾千家,在业界具有相当的知名度,在深圳网站建设市场上树立了良好的口碑。
业精于专,值得您的信赖!
销售热线:0755-26955674
查看更多联系方式
网站设计
浅谈瀑布流网页设计中遇到的问题和解决方法

随着pinterest的走红,瀑布流式的布局被越来越多的网站所使用,这种布局确实有很多好处,图片列表页有很强大的视觉感染力,而且还提高了用户“发现好图”的效率。瀑布流的实现有很多种方式,今天我们主要讨论一下绝对排序来实现瀑布流的方式 即 Pinterest 采用的方式。

首先说下瀑布流的排序算法,思路非常简单,我们把瀑布流拆成三个部分来看:容器、列、格子

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.将列保存在全局数组中,每次重排或者新增格子之后更新数组的数据,这样下次执行排序算法的时候可以直接调用。

2.将新增格子保存在数组中作为参数传递给排序算法,仅对新格子进行遍历和操作。

第三个问题是如果服务器无法给出图片尺寸,那么必须在图片完全加载完毕之后才可进行排序(因为高度是实时获取的,图片不全高度有误差),这里没有什么好办法,只能遍历图片,每张图片加载成功后执行一个回调函数,将加载成功的图片数量+1,当加载成功的图片数量等于图片总数的时候执行排序方法。缺点是有一张图片加载不成共就无法看到所有的,真正项目中还是需要在异步加载数据的时候获取图片尺寸。

好了,以上就是在这次瀑布流实现过程中遇到的问题和解决方法,由一开始加载3-4屏就卡死到现在可以无限加载(ff,chrome),深感优化js的必要性和无限性。


上一篇:如何正确设置整站301重定向 以提升网站权重
下一篇:基于地理位置社交应用需解决的五大问题

技术交流 最新上线
网站制作中关于图片优化的15个原则
网站进行改版时应该注意哪些方面?
多方面入手有效提升网站的用户体验
谷歌网站管理员博客:五个常见的SEO错误
揭示黑客在社交网站上的五大攻击手法
Foshan Green Pipe Technology 网站制作完成
色源实业有限公司深圳网站制作完成
Dongguan Yicheng Innovation 网站设计完成
鸿翼能科技有限公司深圳网站制作完成
AGS technology limited 深圳网站制作完成
 
网站首页 | 公司简介 | 新闻动态 | 超值套餐 | 经典案例 | 常见问答 | 技术支持 | 联系方式 | 留言反馈
Copyright © 2004-2017 LINKCHANT TECHNOLOGY LTD, All Rights Reserved. 粤ICP备05037094号
联系电话: 0755-26955674  电子邮箱: sales@linkchant.com
联灿科技: 深圳网站制作公司 | 深圳网页设计公司 | 深圳网页制作公司 | 深圳网站设计公司 | 深圳网站建设公司 | 深圳网站开发公司 | 深圳做网站的公司