zoukankan      html  css  js  c++  java
  • JS 瀑布流效果

    JS瀑布流效果
    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8" />
        <title>JS瀑布流效果</title>
        <style>
            * {
                margin: 0px;
                padding: 0px;
            }
    
            #container {
                position: relative;
            }
    
            .box {
                padding: 5px;
                float: left;
            }
    
            .box_img {
                padding: 5px;
                border: 1px solid #cccccc;
                box-shadow: 0 0 5px #ccc;
                border-radius: 5px;
            }
    
                .box_img img {
                    width: 150px;
                    height: auto;
                }
        </style>
    </head>
    <body>
        <div id="container">
            <div class="box"> <div class="box_img"> <img src="/Scripts/img/img1/1.jpg" /> </div> </div>
            <div class="box"> <div class="box_img"> <img src="/Scripts/img/img1/2.jpg" /> </div> </div>
            <div class="box"> <div class="box_img"> <img src="/Scripts/img/img1/3.jpg" /> </div> </div>
            <div class="box"> <div class="box_img"> <img src="/Scripts/img/img1/4.jpg" /> </div> </div>
            <div class="box"> <div class="box_img"> <img src="/Scripts/img/img1/5.jpg" /> </div> </div>
            <div class="box"> <div class="box_img"> <img src="/Scripts/img/img1/6.jpg" /> </div> </div>
            <div class="box"> <div class="box_img"> <img src="/Scripts/img/img1/7.jpg" /> </div> </div>
            <div class="box"> <div class="box_img"> <img src="/Scripts/img/img1/8.jpg" /> </div> </div>
            <div class="box"> <div class="box_img"> <img src="/Scripts/img/img1/9.jpg" /> </div> </div>
            <div class="box"> <div class="box_img"> <img src="/Scripts/img/img1/10.jpg" /> </div> </div>
    
            <div class="box"> <div class="box_img"> <img src="/Scripts/img/img1/1.jpg" /> </div> </div>
            <div class="box"> <div class="box_img"> <img src="/Scripts/img/img1/2.jpg" /> </div> </div>
            <div class="box"> <div class="box_img"> <img src="/Scripts/img/img1/3.jpg" /> </div> </div>
            <div class="box"> <div class="box_img"> <img src="/Scripts/img/img1/4.jpg" /> </div> </div>
            <div class="box"> <div class="box_img"> <img src="/Scripts/img/img1/5.jpg" /> </div> </div>
            <div class="box"> <div class="box_img"> <img src="/Scripts/img/img1/6.jpg" /> </div> </div>
            <div class="box"> <div class="box_img"> <img src="/Scripts/img/img1/7.jpg" /> </div> </div>
            <div class="box"> <div class="box_img"> <img src="/Scripts/img/img1/8.jpg" /> </div> </div>
            <div class="box"> <div class="box_img"> <img src="/Scripts/img/img1/9.jpg" /> </div> </div>
            <div class="box"> <div class="box_img"> <img src="/Scripts/img/img1/10.jpg" /> </div> </div>
    
            <div class="box"> <div class="box_img"> <img src="/Scripts/img/img1/1.jpg" /> </div> </div>
            <div class="box"> <div class="box_img"> <img src="/Scripts/img/img1/2.jpg" /> </div> </div>
            <div class="box"> <div class="box_img"> <img src="/Scripts/img/img1/3.jpg" /> </div> </div>
            <div class="box"> <div class="box_img"> <img src="/Scripts/img/img1/4.jpg" /> </div> </div>
            <div class="box"> <div class="box_img"> <img src="/Scripts/img/img1/5.jpg" /> </div> </div>
            <div class="box"> <div class="box_img"> <img src="/Scripts/img/img1/6.jpg" /> </div> </div>
            <div class="box"> <div class="box_img"> <img src="/Scripts/img/img1/7.jpg" /> </div> </div>
            <div class="box"> <div class="box_img"> <img src="/Scripts/img/img1/8.jpg" /> </div> </div>
            <div class="box"> <div class="box_img"> <img src="/Scripts/img/img1/9.jpg" /> </div> </div>
            <div class="box"> <div class="box_img"> <img src="/Scripts/img/img1/10.jpg" /> </div> </div>
    
            <div class="box"> <div class="box_img"> <img src="/Scripts/img/img1/1.jpg" /> </div> </div>
            <div class="box"> <div class="box_img"> <img src="/Scripts/img/img1/2.jpg" /> </div> </div>
            <div class="box"> <div class="box_img"> <img src="/Scripts/img/img1/3.jpg" /> </div> </div>
            <div class="box"> <div class="box_img"> <img src="/Scripts/img/img1/4.jpg" /> </div> </div>
            <div class="box"> <div class="box_img"> <img src="/Scripts/img/img1/5.jpg" /> </div> </div>
            <div class="box"> <div class="box_img"> <img src="/Scripts/img/img1/6.jpg" /> </div> </div>
            <div class="box"> <div class="box_img"> <img src="/Scripts/img/img1/7.jpg" /> </div> </div>
            <div class="box"> <div class="box_img"> <img src="/Scripts/img/img1/8.jpg" /> </div> </div>
            <div class="box"> <div class="box_img"> <img src="/Scripts/img/img1/9.jpg" /> </div> </div>
            <div class="box"> <div class="box_img"> <img src="/Scripts/img/img1/10.jpg" /> </div> </div>
    
            <div class="box"> <div class="box_img"> <img src="/Scripts/img/img1/1.jpg" /> </div> </div>
            <div class="box"> <div class="box_img"> <img src="/Scripts/img/img1/2.jpg" /> </div> </div>
            <div class="box"> <div class="box_img"> <img src="/Scripts/img/img1/3.jpg" /> </div> </div>
            <div class="box"> <div class="box_img"> <img src="/Scripts/img/img1/4.jpg" /> </div> </div>
            <div class="box"> <div class="box_img"> <img src="/Scripts/img/img1/5.jpg" /> </div> </div>
            <div class="box"> <div class="box_img"> <img src="/Scripts/img/img1/6.jpg" /> </div> </div>
            <div class="box"> <div class="box_img"> <img src="/Scripts/img/img1/7.jpg" /> </div> </div>
            <div class="box"> <div class="box_img"> <img src="/Scripts/img/img1/8.jpg" /> </div> </div>
            <div class="box"> <div class="box_img"> <img src="/Scripts/img/img1/9.jpg" /> </div> </div>
            <div class="box"> <div class="box_img"> <img src="/Scripts/img/img1/10.jpg" /> </div> </div>
        </div>
    
        <script>
            window.onload = function () {
                imgLocation("container", "box");
                var imgData = {
                    "data": [{ "src": "1.jpg" }, { "src": "2.jpg" }, { "src": "3.jpg" }, { "src": "4.jpg" }, { "src": "5.jpg" },
                    { "src": "6.jpg" }, { "src": "7.jpg" }, { "src": "8.jpg" }, { "src": "9.jpg" }, { "src": "10.jpg" }]
                };
                window.onscroll = function () {
                    if (checkFlag()) {
                        var cparent = document.getElementById("container");
                        for (var i = 0; i < imgData.data.length; i++) {
                            var ccontent = document.createElement("div");
                            ccontent.className = "box";
                            cparent.appendChild(ccontent);
                            var boximg = document.createElement("div");
                            boximg.className = "box_img";
                            ccontent.appendChild(boximg);
                            var img = document.createElement("img");
                            img.src = "/Scripts/img/img1/" + imgData.data[i].src;
                            boximg.appendChild(img);
                        }
                        imgLocation("container", "box");
                    }
                }
            }
    
            function checkFlag() {
                var cparent = document.getElementById("container");
                var ccontent = getChildElement(cparent, "box");
                var lastContentHeight = ccontent[ccontent.length - 1].offsetTop;
                var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
                var pageHeight = document.documentElement.clientHeight || document.body.clientHeight;
                console.log(lastContentHeight + " " + scrollTop + " " + pageHeight);
                if (lastContentHeight < scrollTop + pageHeight) {
                    return true;
                }
            }
    
            function imgLocation(parent, content) {
                //将parent下的所有的content全部取出
                var cparent = document.getElementById(parent);
                var ccontent = getChildElement(cparent, content);
                console.log(ccontent);
                var imgWidth = ccontent[0].offsetWidth;
                var num = Math.floor(document.documentElement.clientWidth / imgWidth);
                cparent.style.cssText = "" + imgWidth * num + "px;margin:0px auto;";
    
                var boxHeightArr = [];
                for (var i = 0; i < ccontent.length; i++) {
                    if (i < num) {
                        boxHeightArr[i] = ccontent[i].offsetHeight;
                        console.log(boxHeightArr[i]);
                    }
                    else {
                        var minHeight = Math.min.apply(null, boxHeightArr);
                        var minIndex = getMinHeightLocation(boxHeightArr, minHeight);
                        ccontent[i].style.position = "absolute";
                        ccontent[i].style.top = minHeight + "px";
                        ccontent[i].style.left = ccontent[minIndex].offsetLeft + "px";
                        boxHeightArr[minIndex] = boxHeightArr[minIndex] + ccontent[i].offsetHeight;
                    }
                }
            }
            function getMinHeightLocation(BoxHeightArr, minHeight) {
                for (var i in BoxHeightArr) {
                    if (BoxHeightArr[i] == minHeight) {
                        return i;
                    }
                }
            }
            function getChildElement(parent, content) {
                var contentArr = [];
                var allConnect = parent.getElementsByTagName("*");
                for (var i = 0; i < allConnect.length; i++) {
                    if (allConnect[i].className == content) {
                        contentArr.push(allConnect[i]);
                    }
                }
                return contentArr;
            }
        </script>
    </body>
    </html>
  • 相关阅读:
    asp.net(C#)页面事件顺序
    C#多线程学习 之 线程池[ThreadPool]
    JS 获取浏览器窗口大小
    关于Json的那点事
    jquery 动态滚动
    Null,DBNull,String.Empty 区别 C# 转载
    js图片大小限制,设置
    mysql 自定义函数获取两点间距离
    KindleConverter:Word批量转换为6寸PDF
    在 Asp.NET MVC 中使用 SignalR 实现推送功能
  • 原文地址:https://www.cnblogs.com/kikyoqiang/p/11247688.html
Copyright © 2011-2022 走看看