• 图片懒加载和预加载


    懒加载实际上就是通过计算图片的到可视区窗口的距离,如果图片的顶部到可视区窗口的底部的距离小于等于0的话,就生成一个image并设置image.src的属性值,放置到相应的图片位置

    从而实现懒加载,即动态的创建image和添加image元素到页面。

    预加载:要实现已进入页面就将图片下载,直接在script中创建imgae数组,循环的将图片的地址信息传递给各个image元素的src特性即可

    懒加载实现:

    <!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">
        <style>
            ul{
                margin-left: 50%;
                position: relative;
                left: -100px;
                 200px;
                height: 200px;
                background-color: gold;
                overflow: auto;
                list-style: none;
                padding: 0px;
            }
            li{
                 100px;
                height: 100px;
                background-color:green;
                margin-bottom: 10px;
            }
    
            img{
                100px;
                height: 100px;
            }
        </style>
        <title>懒加载</title>
    </head>
    <body>
        <h1>图片懒加载</h1>
        <ul>        
            <li data-src="http://cover.read.duokan.com/mfsv2/download/fdsc3/p01N203pHTU7/Wr5314kcLAtVCi.jpg!t"><i></i></li>
            <li data-src="http://77fkxu.com1.z0.glb.clouddn.com/20160308/1457402219_73571.jpg"><i></i></li>
            <li data-src="http://cover.read.duokan.com/mfsv2/download/fdsc3/p01a3SXHo2hZ/XYAC5TLk4uYWXn.jpg!t"><i></i></li>
            <li data-src="http://pic1.cxtuku.com/00/16/18/b3809a2ba0f3.jpg"><i></i></li>
            <li data-src="http://img.bitscn.com/upimg/allimg/c150708/14363B06253120-6060O.jpg"><i></i></li>
            <li data-src="http://pic.58pic.com/58pic/17/18/97/01U58PIC4Xr_1024.jpg"><i></i></li>
            <li data-src="http://cover.read.duokan.com/mfsv2/download/fdsc3/p015trgKM7vw/H0iyDPPneOVrA4.jpg!t"><i></i></li>
            <li data-src="http://77fkxu.com1.z0.glb.clouddn.com/20160308/1457402219_73571.jpg"><i></i></li>
            <li data-src="http://imgsrc.baidu.com/baike/pic/item/2f9cbdcc5e0bcf5c00e9283b.jpg"><i></i></li>
            <li data-src="http://pic1.cxtuku.com/00/16/18/b3809a2ba0f3.jpg"><i></i></li>
            <li data-src="http://img.bitscn.com/upimg/allimg/c150708/14363B06253120-6060O.jpg"><i></i></li>
            <li data-src="http://pic.58pic.com/58pic/17/18/97/01U58PIC4Xr_1024.jpg"><i></i></li>
            <li data-src="http://cover.read.duokan.com/mfsv2/download/fdsc3/p015trgKM7vw/H0iyDPPneOVrA4.jpg!t"><i></i></li>
            <li data-src="http://77fkxu.com1.z0.glb.clouddn.com/20160308/1457402219_73571.jpg"><i></i></li>
            <li data-src="http://imgsrc.baidu.com/baike/pic/item/2f9cbdcc5e0bcf5c00e9283b.jpg"><i></i></li>
            <li data-src="http://pic1.cxtuku.com/00/16/18/b3809a2ba0f3.jpg"><i></i></li>
            <li data-src="http://img.bitscn.com/upimg/allimg/c150708/14363B06253120-6060O.jpg"><i></i></li>
        </ul>
        <script>
            // 实质就是动态的生成img 让其动态的加载图片,判断是否是在可视区域内
            
           var ul = document.getElementsByTagName("ul")[0];
           var lis = document.getElementsByTagName("li");
           function check(element){
                //判断是否需要将图片加载进来
                //https://blog.csdn.net/weixin_40929761/article/details/81061434
                //offsetTop距离文档顶端的距离,scrollTop滚过的距离,200 ul的宽度 减去之后就是元素距离ul底部的距离
                //小于0就说明进入了
                if(element.offsetTop-ul.scrollTop-200<=0){
                    return true;
                
                }else{
                    return false;
                }
            }
           document.getElementsByTagName("ul")[0].onscroll = function (){
               for(let i=0;i<lis.length;i++){
                    if(check(lis[i])){
                        lis[i].style.backgroundColor = "red";
                        var img = document.createElement("img");
                        img.src = lis[i].dataset.src;
                        lis[i].appendChild(img);
                    }
    
               }
           }
        </script>
    </body>
    </html>
  • 相关阅读:
    质量属性的六个常见属性应用场景(淘宝篇)
    软件架构师如何工作?
    寒假学习第十五天
    寒假学习第十四天
    ADMEMS方法体系:3个阶段,一个贯穿环节之Refined Architecture阶段阅读感悟
    《企业应用架构模式》阅读笔记一
    《重构:改善既有代码的设计》阅读笔记三
    大数据分析01——数据爬取
    《重构:改善既有代码的设计》阅读笔记二
    kettle--Trans插件之输出
  • 原文地址:https://www.cnblogs.com/panjingshuang/p/11619025.html
Copyright © 2020-2023  润新知