美文网首页
原生js瀑布流代码

原生js瀑布流代码

作者: gtt21 | 来源:发表于2017-07-26 22:24 被阅读0次
    <!DOCTYPE html>
     <html lang="en">
     <head>
<meta charset="UTF-8">
<title>Title</title>
<link rel="stylesheet" href="css/reset.css">
<style>
    #box{
        width:1000px;
        overflow: hidden;/*清除浮动影响*/
        margin:0 auto;
    }
    #box ul{
        width:300px;/*只设置宽度,自适应高度*/
        border: 1px solid #000;
        float: left;/*浮动布局*/
        margin: 10px;
    }
    #box ul li{
        width:280px;
        margin: 10px;
        background: #ff9ca1;
    }
</style>
<script>

    //定义函数,封装一个创建随机高度的li元素(替代图片)
    function createLi(){
        var oLi=document.createElement('li');//创建li元素
        oLi.style.height=parseInt(Math.random()*(500-50)+50)+'px';//li的高度随机
        return oLi;//函数返回值为li
    }

    //当页面加载完后,执行行数
    window.onload=function(){

        //获取容器
        var oBox=document.getElementById('box');

        //获取容器的每一列的ul
        var aUl=oBox.children;

        //定义函数,封装一个预加载20次的图片
        function create20(){

            //循环20次
            for(var i=0; i<20; i++){

                //每执行一次创建一个li
                var oLi=createLi();

                //把所有的ul丢进数组里面

                // 创建一个空数组
                var arr=[];

                //遍历所有的ul
                for(var k=0; k<aUl.length; k++){

                    //依次把ul添加到数组
                    arr[k]=aUl[k];
                }

                //对数组里的ul用其高度排序
                arr.sort(function(ul1,ul2){
                    return ul1.offsetHeight-ul2.offsetHeight;
                });

                //给高度最短的ul添加li(图片)
                arr[0].appendChild(oLi);
            }
        }

        //页面加载完后,直接执行一次函数,生成20张图片
        create20();

        //当滚动条变化时,执行函数
        window.onscroll=function(){

            //获取滚动条滚动的纵向距离
            var scrollT=document.documentElement.scrollTop || document.body.scrollTop;

            //获取可视区的高度
            var scrollBottom=scrollT+document.documentElement.clientHeight;

            //判断,当滚动距离大于或等于20张图片加载完body的高度时,再次加载20张图片,实现瀑布流效果

            //-500的作用是避免用户看到最后高度不一的图片和空白区域,具体数值随意
            if(scrollBottom>=document.body.offsetHeight-500){
                console.log('加载更多');//在调试框突出继续加载效果
                create20();
            }
        };
    };
</script>
   </head>
           <body>
<div id="box">
    <ul></ul>
    <ul></ul>
    <ul></ul>
</div>
    </body>
</html>

相关文章

  • 原生js瀑布流代码

  • js/jQuery实现瀑布流

    html中主要代码: 实现瀑布流的js代码: css实现瀑布流只需要三行代码: 实现下拉刷新的js代码: js/c...

  • 原生js实现瀑布流

    浏览网页的时候经常会遇到瀑布流布局的网站。也许有些读者不了解瀑布流。瀑布流,又称瀑布流式布局。是比较流行的一种网...

  • 原生js之瀑布流

    我们已经总结出了瀑布流式布局的两大特征: 内容框宽度固定,高度不固定。 内容框从左到右排列,一行排满后,其余内容框...

  • Js实现瀑布流

    1.使用原生js实现瀑布流效果,demo地址(https://xukeler.github.io/waterfal...

  • Vue 中 瀑布流 以及 上拉加载

    瀑布流 1.首先 在项目中 安装 瀑布流 依赖 2.在项目中的main.js 引入 3.在你要写瀑布流的页面写入一下代码

  • 原生js实现瀑布流效果

    实现目标:实现瀑布流布局、当滚动条滚动到一定距离时加载图片瀑布流布局:结合窗口改变 定位第一行的盒子 第二行第一...

  • 原生js写的瀑布流

    这里只写了js和css方法,大家有兴趣可以动手写写

  • 原生Js实现瀑布流效果

    盗用的效果图 效果分析 瀑布流中图片的宽度都是固定的,但是高度需要设置为auto以使图片不变形,高度不固定。首先想...

  • 原生js的瀑布流写法

    以下是一种原生js的瀑布流写法,或许具体实现过程需要慢慢尝试,但是这种思想很重要。就是对每张图片执行一个循环,在每...

网友评论

      本文标题:原生js瀑布流代码

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