JS瀑布流懒加载案例

简介: JS瀑布流懒加载案例

代码附上:

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>fall_out</title>
        <style>
            * {
                margin: 0;
                padding: 0;
            }
            ul {
                list-style: none;
            }
        </style>
    </head>
    <body>
        <ul></ul>
        <script>
            var ul, img;
            // 创建容器
            const count = 5;//总列数
            var arr = [];//存放高度之后用来比较
            var pic = 1;//图片索引
            init();//入口函数
            function init() {
                ul = document.querySelector("ul");//获取ul
                for (var i = 0; i < count; i++) {//根据count创建li
                    var li = document.createElement("li");
                    ul.appendChild(li);
                    //设置样式
                    li.style.margin = "5px";
                    li.style.width = (document.documentElement.clientWidth) / count - 22 + "px";
                    li.style.border = "1px solid lightcoral";
                    li.style.float = "left";
                    arr.push(0);//初始化第一排图片的高
                }
                //新建第一张图片
                img = new Image();
                img.src = "img/" + pic + ".jpg";
                img.addEventListener("load", addPic);//添加加载事件
                document.addEventListener("scroll", move);//给右侧滚轮添加滚轮事件
            }
            function addPic(e) {
                // 复制第一张图片
                var copy = this.cloneNode(false);
                var min = Math.min.apply(null, arr);
                var index = arr.indexOf(min);//寻找高度最小的图片
                ul.children[index].appendChild(copy);//将图片加载到ul的高度最小的li中
                copy.style.width = "100%";
                arr[index] = copy.parentElement.offsetHeight;//将高度添加到数组的该项
                if ((document.documentElement.scrollHeight - document.documentElement.scrollTop) / document.documentElement
                    .clientHeight > 4) {//当右边滚轮到达屏幕高度四倍时跳出函数
                    return;
                }
                pic = parseInt(Math.random() * 10 + 1);//否则继续加载图片
                img.src = "img/" + pic + ".jpg";
            }
            function move(e) {//当文档高度减滚动条的位置小于屏幕两倍时,继续加载
                if ((document.documentElement.scrollHeight - document.documentElement.scrollTop) / document.documentElement
                    .clientHeight < 2) {
                    pic = parseInt(Math.random() * 10 + 1);
                    img.src = "img/" + pic + ".jpg";
                }
            }
        </script>
    </body>
</html>
相关文章
|
3月前
|
数据采集 Web App开发 JavaScript
利用Selenium和XPath抓取JavaScript动态加载内容的实践案例
利用Selenium和XPath抓取JavaScript动态加载内容的实践案例
|
5月前
|
Web App开发 前端开发 JavaScript
技术心得记录:瀑布流的布局原理分析(纯CSS瀑布流与JS瀑布流)
技术心得记录:瀑布流的布局原理分析(纯CSS瀑布流与JS瀑布流)
54 0
|
1月前
|
JavaScript 前端开发
JS懒加载
JS懒加载
25 0
|
1月前
|
前端开发 JavaScript
JavaScript动态渲染页面爬取——CSS位置偏移反爬案例分析与爬取实战
JavaScript动态渲染页面爬取——CSS位置偏移反爬案例分析与爬取实战
|
3月前
|
JavaScript 前端开发 UED
Javaweb之javascript的小案例的详细解析
通过上述步骤,我们得到了一个动态更新的实时时钟,这个简单的JavaScript案例展示了定时器的使用方法,并讲解了如何处理日期和时间。这个案例说明了JavaScript在网页中添加动态内容与交互的能力。对于涉足JavaWeb开发的学习者来说,理解和运用这些基础知识非常重要。
41 11
|
3月前
|
JavaScript API 图形学
一个案例带你从零入门Three.js,深度好文!
【8月更文挑战第1天】本教程无需任何Threejs知识!本教程以入门为主,带你快速了解Three.js开发
81 2
一个案例带你从零入门Three.js,深度好文!
|
3月前
|
JavaScript 前端开发 UED
小白请看! 大厂面试题 :如何用JS实现瀑布流
小白请看! 大厂面试题 :如何用JS实现瀑布流
|
3月前
|
JavaScript 前端开发
js懒加载
js懒加载
11 0
|
3月前
|
JavaScript 前端开发
|
3月前
|
前端开发 JavaScript 开发者
fuse.js前端搜索简单使用的三个案例
通过这三个例子可以看出,Fuse.js 是一个功能丰富、易于实现的前端搜索库。它使开发者能够便捷地实现从基础到高级的搜索功能,无论是简单的列表搜索还是实时的搜索建议,都能够高效、精确地提供给用户所需的信息。
169 0