zoukankan      html  css  js  c++  java
  • 实现瀑布流布局 https://blog.csdn.net/csdn_zsdf/article/details/69367182

    html代码

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset = "utf-8" />
    <script src = "./jswaterfll.js"></script>
        <title>瀑布流布局</title>
        <style type="text/css">
        *{
            padding: 0px;
            margin: 0px;
        }
    
        #main{
            position: relative;
    
        }
        .box{
    /*      display: inline-block;*/
            padding: 15px 0px 0px 15px;
            float: left;
    
        }
        .pic{
            padding: 10px;
            border-radius: 5px;
            border:1px solid #ccc;
            box-shadow: 0 0 5px #ccc;
        }
    
        .pic img{
            width: 165px;
            height: auto;
        }
        </style>
    </head>
    <body>
    <div id = "main">
        <div class = "box">
            <div class = "pic">
                <img src = "images/0.jpg">
            </div>
        </div>
        <div class = "box">
            <div class = "pic">
                <img src = "images/1.jpg">
            </div>
        </div>
        <div class = "box">
            <div class = "pic">
                <img src = "images/2.jpg">
            </div>
        </div>
        <div class = "box">
            <div class = "pic">
                <img src = "images/3.jpg">
            </div>
        </div>
        <div class = "box">
            <div class = "pic">
                <img src = "images/4.jpg">
            </div>
        </div>
        <div class = "box">
            <div class = "pic">
                <img src = "images/5.jpg">
            </div>
        </div>
        <div class = "box">
            <div class = "pic">
                <img src = "images/6.jpg">
            </div>
        </div>
        <div class = "box">
            <div class = "pic">
                <img src = "images/7.jpg">
            </div>
        </div>
    
        <div class = "box">
            <div class = "pic">
                <img src = "images/8.jpg">
            </div>
        </div>
        <div class = "box">
            <div class = "pic">
                <img src = "images/9.jpg">
            </div>
        </div>
        <div class = "box">
            <div class = "pic">
                <img src = "images/10.jpg">
            </div>
        </div>
        <div class = "box">
            <div class = "pic">
                <img src = "images/11.jpg">
            </div>
        </div>
        <div class = "box">
            <div class = "pic">
                <img src = "images/12.jpg">
            </div>
        </div>
        <div class = "box">
            <div class = "pic">
                <img src = "images/13.jpg">
            </div>
        </div>
        <div class = "box">
            <div class = "pic">
                <img src = "images/14.jpg">
            </div>
        </div>
        <div class = "box">
            <div class = "pic">
                <img src = "images/15.jpg">
            </div>
        </div>
        <div class = "box">
            <div class = "pic">
                <img src = "images/16.jpg">
            </div>
        </div>
        <div class = "box">
            <div class = "pic">
                <img src = "images/17.jpg">
            </div>
        </div>
        <div class = "box">
            <div class = "pic">
                <img src = "images/18.jpg">
            </div>
        </div>
        <div class = "box">
            <div class = "pic">
                <img src = "images/19.jpg">
            </div>
        </div>
        <div class = "box">
            <div class = "pic">
                <img src = "images/20.jpg">
            </div>
        </div>
        <div class = "box">
            <div class = "pic">
                <img src = "images/21.jpg">
            </div>
        </div>
    </div>
    </body>
    </html>

    js代码

    window.onload = function(){
        waterFull('main','box');
    }
    
    function waterFull(parent,children){
        var oParent = document.getElementById(parent);
        //var oBoxs = parent.querySelectorAll(".box");
    
         var oBoxs = getByClass(oParent,children);
    
        //计算整个页面显示的列数
    
        var oBoxW = oBoxs[0].offsetWidth;
    
        var cols = Math.floor(document.documentElement.clientWidth/oBoxW);
    
        //设置main的宽度,并且居中
    
        oParent.style.cssText = ''+oBoxW * cols +'px; margin: 0 auto';
    
        //找出高度最小的图片,将下一个图片放在下面
    
        //定义一个数组,存放每一列的高度,初始化存的是第一行的所有列的高度
    
        var arrH = [];
    
        for(var i = 0; i< oBoxs.length ; i++){
            if(i < cols){
                arrH.push(oBoxs[i].offsetHeight);
            }
            else{
                var minH = Math.min.apply(null,arrH);
    
                var minIndex = getMinhIndex(arrH,minH);
    
                oBoxs[i].style.position = 'absolute';
                oBoxs[i].style.top= minH + 'px';
                oBoxs[i].style.left = minIndex * oBoxW + 'px'; 
            //  oBoxs[i].style.left = arrH[minIndex].;
    
                arrH[minIndex] += oBoxs[i].offsetHeight; 
            }
        }
    
    
    }
    function getByClass(parent,className){
    
        var boxArr = new Array();//用来获取所有class为box的元素
    
        oElement = parent.getElementsByTagName('*');
    
        for (var i = 0; i <oElement.length; i++) {
    
            if(oElement[i].className == className){
    
                boxArr.push(oElement[i]);
    
            }
        };
        return boxArr;
    }
    
    
    //获取当前最小值得下标
    function getMinhIndex(array,min){
    
        for(var i in array){
    
            if(array[i] == min)
    
                return i;
        }
    }
  • 相关阅读:
    机器学习:深入理解 LSTM 网络 (一)
    熵、交叉熵、相对熵(KL 散度)意义及其关系
    熵、交叉熵、相对熵(KL 散度)意义及其关系
    概率分布的 perplexity
    概率分布的 perplexity
    ImageNet 数据集
    i++与++i的区别,使用实例说明
    [置顶] ARM指令集和常用寄存器
    求大数阶数
    Wi-Fi漫游的工作原理
  • 原文地址:https://www.cnblogs.com/ouchen0312/p/9227509.html
Copyright © 2011-2022 走看看