美文网首页
图片的懒加载

图片的懒加载

作者: 郑宋君 | 来源:发表于2018-11-20 12:48 被阅读0次

我们做一个网站的时候,有时候有很多的资源加载,比如说有大量的图片展示,图片一般情况下会消耗很多的资源,一个页面有上百个图片的展示如果一次从服务器请求过来会导致很慢,不仅如此,这样做也会导致资源的浪费(毕竟用户可能只看一点点内容)并且这样图片展示的话也会很慢,用户的体验也不会特别好,如果我们使用图片懒加载的这个技术,就会大大减少资源的浪费和提高用户的体验
那么问题来了,什么是懒加载
懒加载是在网上有很多的解释,统一来说就是按需加载
懒加载表现形式:

  • 浏览网页的时候拖动滚动条
  • 拖动到一个占位图片的视窗
  • 占位图片瞬间变成最终的图片
    好了,我们如果要学习懒加载技术,思路是,首先页面中的几十个图片都是同一个图片,我们看到了某个图片,他就变成了需要展示的图片
    按照这个思路,首先,我们什么怎么判定图片被我们看到呢
    图片烂加载.png
    首先我们要获取浏览器的高度(window).height(),和展示页面的距离浏览器顶端的高度(window).scrollTop(),以及图片节点距离页面顶端的高度$(node).offset().top,有了这三个变量我们可以使用公式来判定图片是否被我们看到
$(node).offset().top <= $(window).height() + $(window).scrollTop()

第二步,如何让图片被变成我们的最终图片呢
首先我们定义一个自定义的属性data-src来存储图片的真实地址,如何图片被我们看到了,我们就使用data-src里面的值来替换src的值就达到了我们目标变成最终展示的图片

$(node).attr('src',$(node).attr(data-src))

html代码

    <style>
        *{
            margin: 0;
            padding: 0;
        }
        img{
            width: 500px;
            height: 500px;
        }

        .layout{
            width: 1000px;
            margin: 0 auto;
            font-size: 0px;
        }
    </style>
    <div class="layout">
        <img src="./img/1.jpg" alt="" data-src="./img/1.jpg">
        <img src="./img/1.jpg" alt="" data-src="./img/2.jpg">
        <img src="./img/1.jpg" alt="" data-src="./img/3.jpg">
        <img src="./img/1.jpg" alt="" data-src="./img/4.jpg">
        <img src="./img/1.jpg" alt="" data-src="./img/5.jpg">
        <img src="./img/1.jpg" alt="" data-src="./img/6.jpg">
        <img src="./img/1.jpg" alt="" data-src="./img/7.jpg">
        <img src="./img/1.jpg" alt="" data-src="./img/8.jpg">
        <img src="./img/1.jpg" alt="" data-src="./img/9.jpg">
        <img src="./img/1.jpg" alt="" data-src="./img/10.jpg">
        <img src="./img/1.jpg" alt="" data-src="./img/11.jpg">
        <img src="./img/1.jpg" alt="" data-src="./img/12.jpg">
        <img src="./img/1.jpg" alt="" data-src="./img/13.jpg">
        <img src="./img/1.jpg" alt="" data-src="./img/14.jpg">
        <img src="./img/1.jpg" alt="" data-src="./img/15.jpg">
        <img src="./img/1.jpg" alt="" data-src="./img/16.jpg">
    </div>

jQuery代码

        start()

        $(window).on('scroll',function(){
            start()
        })
        //加载函数
        function start(){
            $('.layout img').each(function(){
                    if( $(this) ){
                    loadImg( $(this) )
                }
            })
        }
        //修改图片地址函数
        function loadImg($img){
            $img.attr('src',$img.attr('data-src'))
        }
        //是否显示函数
        function isShow($node){
            return $node.offset().top <= $(window).height() + $(window).scrollTop()
        }

当然,为了让代码更健壮,我们可以考虑加入判断元素,如果Img已经进行了加载了,那就不要让他在继续修改src的值了,我们修改一下isShow()start()这两个函数

function start(){
  //根据data-isLoaded属性来判断是否给这个对象添加加载事件
$('.layout img').not('[data-isLoad]').each(function(){
       if( $(this) ){
                    loadImg( $(this) )
         }
  })
}

  function loadImg($img){
      $img.attr('src', $img.attr('data-src'))
     //加载过后就添加 data-isLoaded属性
      $img.attr('data-isLoaded',1)
  }

这样就算是一个比较合格的懒加载布局了

相关文章

  • 项目优化

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

  • JS

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

  • 图片懒加载

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

  • 图片懒加载

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

  • js 实现图片懒加载

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

  • 图片懒加载和预加载

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

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

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

  • 懒加载和瀑布流

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

  • jquery懒加载、回到顶部

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

  • 懒加载和预加载

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

网友评论

      本文标题:图片的懒加载

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