美文网首页
图片懒加载

图片懒加载

作者: 学的会的前端 | 来源:发表于2019-07-31 14:10 被阅读0次

图片懒加载

  • 思路:起始的时候,不让图片进行加载,那么img的src属性设置为空,src = ' ',在自定义一个属性,用来保存图片的地址data-src = "http://......jpg",当需要图片进行加载的时候,只需要把data-src的值复制到 src里面,浏览器就会发送请求,图片就会加载。
  • 图片在什么情况下加载:当滚动页面时,检查页面所有的img标签,看看这个标签是否出现到我们的视野,当出现在我们的视野时,再去判断它是否已经加载过,如果没有加载过,加载它。
<!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>Document</title>
    <script src = "http://kejian.jirengu.com/static/js/jquery-1.11.1.min.js"></script>
    <style>
        ul,li {
            list-style: none;
        }
        .container {
            width: 600px;
            margin: 0 auto;
        }
        .container li {
            float: left;
            margin: 10px 10px;
        }
        .container li img {
            width: 240px;
            height: 180px;
        }
        p {
            float: left;
        }
    </style>
</head>
<body>
    <ul class = "container">
        <li><a href = "#">
            <img src = " " data-src = "http://pic.616pic.com/ys_img/00/05/15/O6o6biils1.jpg">
        </a></li>
        <li><a href = "#">
                <img src = "https://img0.pcbaby.com.cn/pcbaby/1602/05/2714651_6.png" data-src = "https://img0.pcbaby.com.cn/pcbaby/1602/05/2714651_6.png">
        </a></li>
        <li><a href = "#">
                <img src = "http://ku.90sjimg.com/element_origin_min_pic/17/06/17/8b91e3acb380d9cd4de59796f6c035cb.jpg" data-src = "http://ku.90sjimg.com/element_origin_min_pic/17/06/17/8b91e3acb380d9cd4de59796f6c035cb.jpg">
        </a></li> 
        <li><a href = "#">
                <img src = " " data-src = "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRBwmmA2LTpf4-LbRbH5VrAlWXoU1ieo0J7qQD_phCpmY69ErEV">
        </a></li> 
        <li><a href = "#">
                <img src = " " data-src = "https://png.pngtree.com/png-clipart/20190520/original/pngtree-cartoon-hand-drawn-lovely-yellow-shiba-inu-png-image_3817347.jpg">
        </a></li>
        <li><a href = "#">
                <img src = " " data-src = "http://pic.sc.chinaz.com/files/pic/pic9/201403/apic648.jpg">
        </a></li>
        <li><a href = "#">
                <img src = " " data-src = "http://pic.sc.chinaz.com/files/pic/pic9/201503/apic10256.jpg">
        </a></li>
        <li><a href = "#">
                <img src = " " data-src = "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTjoSv_GJ7qlHKCqgQjmgzyonEEgNwI7oW-G7ue_v8nSwglKoMgeA">
        </a></li>
        <li><a href = "#">
                <img src = " " data-src = "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSBLHtvr6--RugK3zz4VrlKs5wFpd1b4hyC_bAqC1ytX76VpnNG">
        </a></li>
        <li><a href = "#">
                <img src = " " data-src = "http://img2.1sucai.com/181219/330763-1Q2191U45164.jpg">
        </a></li>
        <li><a href = "#">
                <img src = " " data-src = "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSxQLHQHsgYjR1ZYLfMEm97IGGeCLNI5P2X6vLd6LzXUGLtm84W">
        </a></li>
        <li><a href = "#">
                <img src = " " data-src = "https://gss0.baidu.com/9vo3dSag_xI4khGko9WTAnF6hhy/zhidao/pic/item/83025aafa40f4bfb926d29f2044f78f0f63618d2.jpg">
        </a></li>
        <li><a href = "#">
                <img src = " " data-src = "http://i.shouchaobao.vip/d/file/20180308/e97df440935e36169428f1f6725a7ba9.jpg">
        </a></li>
        <li><a href = "#">
                <img src = " " data-src = "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSvk10qbiP0Oee1JiWVng66CJad_nU-86g4FborDuHGOXh30-SLnQ">
        </a></li>
        <li><a href = "#">
                <img src = " " data-src = "https://png.pngtree.com/png-clipart/20190618/original/pngtree-cartoon-pink-love-little-girl-cartoon-little-girl-hand-drawn-cartoon-png-image_3926186.jpg">
        </a></li>
        <li><a href = "#">
                <img src = " " data-src = "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRZ0O9Pb6TJnGAQ8kw9CSIepuY9uYc2a0Oi5TGvmF_Y9gv7PQVk7A">
        </a></li>
        <li><a href = "#">
                <img src = " " data-src = "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcS2gXdOnB2JXKtnSu8BQ-3Q1N9vgNHY82zugmEbeGvPl6n2F6HPAQ">
        </a></li>
        <li><a href = "#">
                <img src = " " data-src = "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcT6coCkRXka8SrF7x9xVbOQ2lv2cJysaetITXqPrldZllIlvQlL">
        </a></li>
        <li><a href = "#">
                <img src = " " data-src = "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcR4q_XJB814F5eo8rZOyDv1mqPkFKS7gOjQO7ftZRgrEB_UaBQL">
        </a></li>
        <li><a href = "#">
                <img src = " " data-src = "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTPejS3GaHzpbKPDR2C5NiJrTqsy76dGJXX1jFwz1tlG8dgrcz0">
        </a></li>
    </ul>


   
    <script>
        //先进行判断,看是否有图片出现在视野中。
        lazyRender()

        //滚动事件onscroll
        var clock
        $(window).on('scroll',function(){ 
            //稍微滚动一下,console.log会执行很多次
            //console.log('hello')    
           //滚动的过程中不执行,滚动停止时,最后一次滚动在触发事件。
           if(clock){
               clearTimeout(clock)
           } 
           clock = setTimeout(function(){
               console.log('hello')
                lazyRender()
           },300)   
           
        })

        function lazyRender(){
            //对页面上所有的img进行遍历,判断是否出现在视野
            $('.container img').each(function(){
           //isloaded是否被加载过
           if(checkShow($(this)) && !isLoaded($(this))) {
                loadImg($(this))
            } 
            })
        } 



        //判断一个元素是否出现在视野里 
        function checkShow($img) {
            var scrollTop = $(window).scrollTop()
            var windowHeight = $(window).height()
            var offsetTop = $img.offset().top
            if(offsetTop < scrollTop + windowHeight && offsetTop > scrollTop) {
                return true
            }
            return false
        } 
        //判断元素是否是加载过
        //1. 判断src = data-src是否相等
        //2. 给元素加一个自定义属性,判断元素是否有这个属性
        function isLoaded($img){
            return $img.attr('data-src') === $img.attr('src')
        }

        //加载图片
        function loadImg($img){
            $img.attr('src',$img.attr('data-src'))
        }
    </script>
</body>
</html>

相关文章

  • 项目优化

    图片懒加载,数据懒加载, 路由懒加载 1.图片懒加载原理 1.1 开始时 不设置src属性 1.2 图片在可视区域...

  • JS

    JS 懒加载,预加载 概念:懒加载也叫延迟加载:JS图片延迟加载,延迟加载图片或符合某些条件时才加载某些图片。预加...

  • 图片懒加载

    懒加载与预加载的基本概念。 懒加载也叫延迟加载:JS图片延迟加载 延迟加载图片或符合某些条件时才加载某些图片。 预...

  • 图片懒加载

    图片懒加载 图片懒加载在一些图片密集型的网站中运用比较多,通过图片懒加载可以让一些不可视的图片不去加载,避免一次性...

  • js 实现图片懒加载

    一、懒加载 懒加载也叫延迟加载,Js中图片的延迟加载,延迟图片需要符合某些条件时才加载;对于图片过多的页面,为了加...

  • 图片懒加载和预加载

    图片懒加载的原理是什么? 首先明白为什么要懒加载: 懒加载即延迟,对于图片过多的页面,为了加快页面加载速度,我们需...

  • selenuim和phantonJs处理网页动态加载数据的爬取

    一.图片懒加载 什么是图片懒加载? 图片懒加载是一种网页优化技术。图片作为一种网络资源,在被请求时也与普通静态资源...

  • 懒加载和瀑布流

    一、简述图片懒加载的实现原理 图片懒加载 若一开始,页面上有许多的图片要加载,而如果同时加载这么多图片,会消耗性能...

  • jquery懒加载、回到顶部

    1.知识点部分: 懒加载图片的原理是什么? 图片懒加载也称为曝光加载,将页面上的图片分批加载,只有当图片出现在wi...

  • 懒加载和预加载

    1)概念: 懒加载也叫延迟加载:JS图片延迟加载,延迟加载图片或符合某些条件时才加载某些图片。预加载:提前加载图片...

网友评论

      本文标题:图片懒加载

      本文链接:https://www.haomeiwen.com/subject/yfqzrctx.html