• js简单实现图片懒加载


    HMTL

            <div class="index">
                <h3 style="align-content: center;font-size: 30px">向下滚动页面,查看加载效果</h3>
                <div class="index-img">
                    <img data-src="http://www.jq22.com/img/cs/500x300-1.png" src="" alt="" />
                </div>
                <div class="index-img">
                    <img data-src="http://www.jq22.com/img/cs/500x300-2.png" src="" alt="" />
                </div>
                <div class="index-img">
                    <img data-src="http://www.jq22.com/img/cs/500x300-3.png" src="" alt="" />
                </div>
                <div class="index-img">
                    <img data-src="http://www.jq22.com/img/cs/500x300-4.png" src="" alt="" />
                </div>
                <div class="index-img">
                    <img data-src="http://www.jq22.com/img/cs/500x300-5.png" src="" alt="" />
                </div>
                <div class="index-img">
                    <img data-src="http://www.jq22.com/img/cs/500x300-6.png" src="" alt="" />
                </div>
                <div class="index-img">
                    <img data-src="http://www.jq22.com/img/cs/500x300-7.png" src="" alt="" />
                </div>
                <div class="index-img">
                    <img data-src="http://www.jq22.com/img/cs/500x300-8.png" src="" alt="" />
                </div>
            </div>

    CSS

    /*给图片过渡效果*/
    img{transition: all 0.5s;-moz-transition: all 0.5s;    /* Firefox 4 */-webkit-transition: all 0.5s;    /* Safari 和 Chrome */-o-transition: all 0.5s;    /* Opera */;}
    .index{width: 400px;margin: 0 auto;padding-bottom: 100px;}
    .index-img{width: 100%;height:210px;margin-top:100px;}
    /*object-fit: cover;解决图片指定大小被压缩问题*/
    .index-img>img{width: 100%;height: 100%;object-fit: cover;}

    JS

    //监听滚动条事件
    window.onscroll = function(){
        Limg()
    }
    
    //页面加载时调用一次,使图片显示
    window.onload = function() {
        var img = document.querySelectorAll("img[data-src]")
        for(var i = 0; i < img.length; i++) {
            img[i].style.opacity = "0"
        }
        Limg()
    }
    
    function Limg() {
        var viewHeight = document.documentElement.clientHeight // 可视区域的高度
        var t = document.documentElement.scrollTop || document.body.scrollTop;
        var limg = document.querySelectorAll("img[data-src]")
        // Array.prototype.forEach.call()是一种快速的方法访问forEach,并将空数组的this换成想要遍历的list
        Array.prototype.forEach.call(limg, function(item, index) {
            var rect;
            if(item.getAttribute("data-src") === "")
                return
            //getBoundingClientRect用于获取某个元素相对于视窗的位置集合。集合中有top, right, bottom, left等属性。
            rect = item.getBoundingClientRect()
            // 图片一进入可视区,动态加载
            if(rect.bottom >= 0 && rect.top < viewHeight) {
                (function() {
                    var img = new Image()
                    img.src = item.getAttribute("data-src")
                    item.src = img.src
                    //给图片添加过渡效果,让图片显示
                    var j = 0
                    setInterval(function() {
                        j += 0.2
                        if(j <= 1) {
                            item.style.opacity = j
                            return
                        }
                    }, 100)
                    item.removeAttribute('data-src')
                })()
            }
        })
    }

    ...

  • 相关阅读:
    HTML超链接应用场景
    String 字符串和StringBuffer的知识点总结
    猜数游戏代码
    MemoryLayout
    偏swift框架
    git的使用
    寄存器
    swift基础
    枚举
    安装Ubuntu 20.04 以后
  • 原文地址:https://www.cnblogs.com/wxyblog/p/13712978.html
Copyright © 2020-2023  润新知