• JS实现瀑布流


    HTML:先让图片充满一页

    <!DOCTYPE html>
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title>瀑布流</title>
        <link rel="stylesheet" href="css/style.css" type="text/css">
        <script src="js/app.js"></script>
    </head>
    <body>
        <div id="container"><div class="box">
              <<div class="box">
            <div class="box_img">
                <img src="img/5.jpg">
            </div>
        </div><div class="box">
            <div class="box_img">
                <img src="img/5.jpg">
            </div>
        </div><div class="box">
            <div class="box_img">
                <img src="img/5.jpg">
            </div>
        </div><div class="box">
            <div class="box_img">
                <img src="img/5.jpg">
            </div>
        </div><div class="box">
            <div class="box_img">
                <img src="img/5.jpg">
            </div>
        </div><div class="box">
            <div class="box_img">
                <img src="img/5.jpg">
            </div>
        </div><div class="box">
            <div class="box_img">
                <img src="img/5.jpg">
            </div>
        </div><div class="box">
            <div class="box_img">
                <img src="img/5.jpg">
            </div>
        </div><div class="box">
            <div class="box_img">
                <img src="img/5.jpg">
            </div>
        </div><div class="box">
            <div class="box_img">
                <img src="img/5.jpg">
            </div>
        </div><div class="box">
            <div class="box_img">
                <img src="img/5.jpg">
            </div>
        </div><div class="box">
            <div class="box_img">
                <img src="img/5.jpg">
            </div>
        </div><div class="box">
            <div class="box_img">
                <img src="img/5.jpg">
            </div>
        </div><div class="box">
            <div class="box_img">
                <img src="img/5.jpg">
            </div>
        </div><div class="box">
            <div class="box_img">
                <img src="img/5.jpg">
            </div>
        </div><div class="box">
            <div class="box_img">
                <img src="img/5.jpg">
            </div>
        </div><div class="box">
            <div class="box_img">
                <img src="img/5.jpg">
            </div>
        </div><div class="box">
            <div class="box_img">
                <img src="img/5.jpg">
            </div>
        </div><div class="box">
            <div class="box_img">
                <img src="img/5.jpg">
            </div>
        </div><div class="box">
            <div class="box_img">
                <img src="img/5.jpg">
            </div>
        </div><div class="box">
            <div class="box_img">
                <img src="img/5.jpg">
            </div>
        </div><div class="box">
            <div class="box_img">
                <img src="img/5.jpg">
            </div>
        </div><div class="box">
            <div class="box_img">
                <img src="img/5.jpg">
            </div>
        </div><div class="box">
            <div class="box_img">
                <img src="img/5.jpg">
            </div></div></div>
    
    </body>
    </html>

    app.js:

    window.onload=function() {
        imgLocation("container");
        var imgData={"data":[{"src":"2.jpg"},{"src":"4.jpg"},{"src":"5.jpg"},{"src":"6.jpg"},{"src":"7.jpg"}]};
        window.onscroll =function(){
            if(checkFlag()){
                var cparent = document.getElementById("container");
                for(var i=0;i<imgData.data.length;i++){
                    var cnode=document.createElement("div");
                    cnode.className="box";
                    cparent.appendChild(cnode);
                    var boxImg=document.createElement("div");
                    boxImg.className="box_img";
                    cnode.appendChild(boxImg);
                    var img=document.createElement("img");
                    img.src="img/"+imgData.data[i].src;
                    boxImg.appendChild(img);
                }
                imgLocation("container");
            }
        }
    }
    
    function checkFlag(){
        var cparent = document.getElementById("container");
        var arr=cparent.childNodes;
        var lastContentHeight=arr[arr.length-1].offsetTop;
        var scrollTop=document.documentElement.scrollTop||document.body.scrollTop;
        var pageHeight=document.documentElement.clientHeight||document.body.clientHeight;
    
        if(lastContentHeight<scrollTop+pageHeight){
            return true;
        }
    }
    
    function imgLocation(parent){
        var cparent = document.getElementById(parent);
        var arr=Array.prototype.slice.call(cparent.childNodes,0);
        var imgWidth=arr[0].offsetWidth;
        var num=parseInt(document.documentElement.clientWidth/imgWidth);
        cparent.style.cssText=""+imgWidth*num+"px;"+"margin:0px auto";
    
        var boxHeightArr=[];
        for(var i=0;i<arr.length;i++){
            if(i<num){
                boxHeightArr[i]=arr[i].offsetHeight;
            }else{
                var minHeight=Math.min.apply(null,boxHeightArr);
                var index=getMinHeightindex(boxHeightArr,minHeight);
                arr[i].style.position = "absolute";
                arr[i].style.top = minHeight+"px";
                arr[i].style.left = arr[index].offsetLeft+"px";
                boxHeightArr[index] = boxHeightArr[index]+arr[i].offsetHeight;
            }
        }
    }
    
    function getMinHeightindex(boxHeightArr,minHeight){
        for(var i in boxHeightArr){
            if(boxHeightArr[i]==minHeight){
                return i;
            }
        }
    }

    css:

    *{
        padding:0px;
        margin:0px;
    }
    #container{
        position:relative;
    }
    .box{
        padding:5px;
        float:left;
    }
    .box_img{
        padding:5px;
        border:1px solid #cccccc;
        border-radius: 5px;
        box-shadow: 0 0 5px #cccccc;
    }
    .box_img img{
        150px;
        height: auto;
    }
  • 相关阅读:
    winform中利用正则表达式得到有效的电话/手机号
    winform运行时如何接受参数?(示例)
    [基础]Javascript中的继承示例代码
    [转]C#中"is" vs "as"
    Javascript数组常用方法[包含MS AJAX.NET的prototype扩展方法]示例
    linq学习笔记(一)
    用winform应用程序登录网站的解决方案
    [转贴]操纵自如--页面内的配合与通信
    .net3.0中的扩展方法(示例)
    window.location或window.open如何指定target?
  • 原文地址:https://www.cnblogs.com/shytong/p/5069996.html
Copyright © 2020-2023  润新知