zoukankan      html  css  js  c++  java
  • 实现一个瀑布流

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <style>
            * {
                margin: 0;
                padding: 0;
                list-style: none;
            }
            ul {
                 900px;
                margin: 0 auto;
                display: flex;
                justify-content: space-around;
            }
            ul li {
                 200px;
                /* min-height: 500px; */
                background-color: pink;
            }
            ul li img {
                 200px;
                margin-bottom: 10px;
                display: block;
            }
        </style>
    </head>
    <body>
        <ul>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
        </ul>
    <script>
    // 数组,存储100张图片的地址
    var arr = new Array(100).fill(0).map((item, index) => `imgs/${index}.png`).sort(a => Math.random() < 0.5 ? 1 : -1);
    // 获取所有的li
    var lis = document.getElementsByTagName('li');
    // 数组的每一个成员代表一个li的高度
    var height_arr = [0, 0, 0, 0];
    // 向页面中,渲染图片
    arr.forEach(url => {
        // 加载图片
        var img = new Image();
        // 哪个li矮,向哪个li插入图片
        // 图片加载之后就知道图片的高度
        img.onload = function() {
            // 图片等比例缩放: 图片真实宽高比与li中图片宽高比是一样的
            // img.width / img.height = li(img.width) / li(img.height)
            var height = 200 * img.height / img.width;
            // 获取最矮li的序号
            var index = getMin(height_arr, 4);
            // 向页面中渲染图片
            lis[index].appendChild(img);
            // 更新高度, 图片有底边的边距是10
            height_arr[index] += height + 10;
        }
        // 设置地址
        img.src = url;
    })
    
    // 实现获取最矮li的方法
    function getMin(arr, num) {
        // 默认第一个li最矮
        let index = 0;
        // 第一个成员高度
        let height = arr[0];
        // 比较数组每一个成员的高度
        for (var i = 0; i < num; i++) {
            // 第i个成员,高度比当前的还要小呢
            if (height > arr[i]) {
                // 更新最小高度,以及索引值了
                index = i;
                height = arr[i];
            }
        }
        // 返回索引值
        return index;
    }
    </script>
    </body>
    </html>
  • 相关阅读:
    MapReduce WordCount Combiner程序
    Spring Boot 单元测试
    Spring Boot @SpringApplicationConfiguration 不能导入的问题
    西西弗斯 滚石上山
    《Effective Modern C++》翻译--简单介绍
    算法排序问题
    MySQL Study之--MySQL schema_information数据库
    HDOJ 4251 The Famous ICPC Team Again
    一、OpenStack入门 之 初步认识
    python模块
  • 原文地址:https://www.cnblogs.com/yess/p/14742801.html
Copyright © 2011-2022 走看看