瀑布流

在慕课网上,又get到一个新的知识点,即实现网站中不同高度的块级元素在父元素下自适应排列,以达到统一的网页视觉效果的一种WEB技术。

实现的原理:

1.通过计算(页面宽度/单个图片div宽度=列数)得到显示的列数

2.定义一个数组arr,数组的长度即列数,用来保存列高度,初始值都为0

3.查找数组最小值索引赋给minIndex

4.图片盒子.left=minIndex*单个元素宽度

5.图片盒子.top=arr[minIndex]

6.更新 arr[minIndex]+=图片盒子.offsetHeight,判断是不是最后一个图片盒子,如果不是,跳到3。如果是则结束。

 

需要重点理解的是关于minIndex的使用,即minIndex的查找、使用、更新

查找:查找哪一列的高度最低,用来放置新的图片盒子

使用:设置新的图片盒子的绝对定位

更新:更新列的高度

Demo:http://htmlpreview.github.io/?https://github.com/Tanlifan/Study-and-Demo/blob/master/Waterfall/index.html

代码地址:https://github.com/Tanlifan/Study-and-Demo/tree/master/Waterfall

效果图:

可以通过window.onresize来监听窗口事件,用来更新列数,即列的数量随着窗口宽度大小变化

通过window.onscroll来监听滚动条时间,用来添加更多节点到DOM中来实现加载新的图片盒子

具体请看代码

posted @ 2016-10-16 19:11  谭力凡  阅读(173)  评论(0编辑  收藏  举报