美文网首页
瀑布流div版

瀑布流div版

作者: Farewell_V587 | 来源:发表于2017-11-06 20:41 被阅读0次

    瀑布流

    瀑布流是一种网站页面布局,视觉表现为参差不齐的多栏布局,随着页面滚动条向下滚动,这种布局还会不断加载数据块并附加至当前尾部。最早采用此布局的网站是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);
    }
    
    核心代码

    结语

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

    相关文章

      网友评论

          本文标题:瀑布流div版

          本文链接:https://www.haomeiwen.com/subject/epcrmxtx.html