瀑布流div版

2017-11-06  本文已影响0人  Farewell_V587

瀑布流

瀑布流是一种网站页面布局,视觉表现为参差不齐的多栏布局,随着页面滚动条向下滚动,这种布局还会不断加载数据块并附加至当前尾部。最早采用此布局的网站是Pinterest,逐渐在国内流行开来。国内大多数清新站基本为这类风格。

瀑布流特点:

1、琳琅满目:整版以图片为主,大小不一的图片按照一定的规律排列。
2、唯美:图片的风格以唯美的图片为主。
3、操作简单:在浏览网站的时候只需要轻轻滑动一下鼠标滚轮,一切的美妙的图片精彩便可呈现在你面前。

1.思路

每次生成高度随机的div,将页面分成几块,每次插入新的div之前先找到高度最小的块依次取容器中的所有数据块,先寻找当前高度最小的某列,之后根据列序号,确定数据块的left,top值,left 为所在列的序号乘以列宽,top 为所在列的当前高度,最后更新所在列的当前高度加上这个数据块元素的高度,至此,插入一个元素结束;
·当所有元素插入完毕后,调整容器的高度为各列最大的高度值,结束依次调整。

2.效果 瀑布流

先将CSS部分和HTML部分写好


image.png

将样式写好以后就开始我们的JS部分吧
首先我们要获取我们需要的整体

var wrap = document.getElementsByClassName("wrap")[0];

然后在for循环中遍历创建20个div

for (var i=1;i<21;i++){
        var lis = document.createElement('div');
            var random = parseInt(Math.random()*150+50);//随机生成li高度
            //设置生成的li的样式
            lis.style.height = random+"px";
            lis.style.backgroudColor ="red";
            lis.innerHTML=i;
            lis.style.width="200px";
            lis.style.position="absolute";
            //设置最矮的块的下标
            var minIndex = 0;
            //将高度存进数组里;
            var arr =[0,0,0,0,0];
          //遍历几个块,找寻最矮高度的块
            for (var j = 0; j < arr.length; j++){
            if (arr[minIndex] > arr[j]){
                minIndex = j;
            }
            console.log(minIndex);
        }
        //设置li的top值和left值
        lis.style.top=arr[minIndex]+"px";
        lis.style.left = 210*minIndex+"px";
        //数组里的最矮高度的那个值加上要添加进去的那个div高度值
        arr[minIndex]+=(randomS+10);
        //将这个div添加到wrap中
        wrap.appendChild(lis);
}
核心代码

结语

这样的一个简单效果的瀑布流就写好了

上一篇下一篇

猜你喜欢

热点阅读