首页 > 其他 > 详细

瀑布流小案例

时间:2020-10-17 19:05:21      阅读:38      评论:0      收藏:0      [点我收藏+]
<!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>
        * {
            padding: 0;
            margin: 0;
        }
        
        li {
            list-style: none;
        }
        
        #box {
            margin: 0 auto;
            width: 700px;
        }
        
        ul {
            width: 200px;
            float: left;
            margin: 0 auto;
            margin-right: 10px;
        }
        
        img {
            width: 200px;
            padding-top: 10px;
        }
    </style>
</head>

<body>
    <div id="box">
        <ul></ul>
        <ul></ul>
        <ul></ul>
    </div>
    <script src="./js/1.ajax.js"></script>
    <script>
        window.onload = function() {
            let oBox = document.getElementById("box");
            let oUl = document.getElementsByTagName("ul");
            let vH = document.documentElement.clientHeight; // 可视高度
            // 最小高度的列
            function min_height(oUl) {
                let ht = oUl[0].offsetHeight; // 第一张图片的高度
                let index = 0;
                for (let i = 0; i < oUl.length; i++) {
                    if (oUl[i].offsetHeight < ht) { // 第一张图片和其他图片比较
                        ht = oUl[i].offsetHeight; // 获取最小的图片高度
                        index = i; // 获取最小高度的图片的索引
                    }
                }
                return index;
            }
            //加载图片
            function loadingImg() {
                ajax("./index.json", function(data) { // 读取本地 json 下的图片地址
                    data = (new Function("return" + data))(); // 将 string 类型的 data 转换成 数组
                    // 等价于 data = JSON.parse(data);
                    for (let i = 0; i < data.length; i++) {
                        let oLi = document.createElement("li");
                        let oImg = document.createElement("img"); // 新建图片
                        oImg.src = data[i];
                        oLi.appendChild(oImg);
                        oUl[min_height(oUl)].append(oLi); // 将图片添加到最小的那一列
                    }
                })
            }
            loadingImg();
            document.onscroll = function() { // 滚动加载图片
                let sH = document.documentElement.scrollTop || document.body.scrollTop; // 滚动高度
                if (sH + vH >= document.body.scrollHeight * 0.8) { // 文档的实际高度 * 0.8解决滚动时图片空白的问题
                    loadingImg();
                }
            }
        }
    </script>
</body>

</html>

 

瀑布流小案例

原文:https://www.cnblogs.com/brotheryang/p/13832069.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!