zoukankan      html  css  js  c++  java
  • 图片懒加载

    一、定义

    当打开一个有很多图片的页面时,先只加载页面上看到的图片,等滚动到页面下面时,再加载所需的图片。这就是图片懒加载。

    二、作用

    防止页面一次性向服务器发送大量请求,页面卡顿崩溃;缓解浏览器的压力,增强用户体验。

    三、实现方式

    1、设置图片src属性为同一张图片,同时自定义一个data-src属性来存储图片的真实地址
    2、 页面初始化显示的时候或者浏览器发生滚动的时候判断图片是否在视野中
    3、 当图片在视野中时,通过js自动改变该区域的图片的src属性为真实地址

    <div class="container">
        <img src="http://smashinghub.com/wp-content/uploads/2014/08/cool-loading-animated-gif-3.gif" alt="1" data-src="http://cdn.jirengu.com/book.jirengu.com/img/1.jpg">
       .
       .
       .
        <img src="http://smashinghub.com/wp-content/uploads/2014/08/cool-loading-animated-gif-3.gif" alt="20" data-src="http://cdn.jirengu.com/book.jirengu.com/img/20.jpg">
      </div>
    <style>
    .container {
          max- 800px;
          margin: 0 auto;
        }
        .container:after{
          content: '';
          display: block;
          clear: both;
        }
        .container img {
          float: left;
           50%;
        }
        h1{
          clear: both;
        } 
    /*注:img都是浮动,如果不清除浮动,h1的值高度就相当于container里面最高的,不是实际的数值*/
    </style>
    
    
    <script>
        start() // 一开始没有滚动,也需要触发一次 
    
        $(window).on('scroll', function(){// 滚动时,显示对应图片
          start()
        })
    
        function start(){
          $('.container img').not('[data-isLoaded]').each(function(){
            var $node = $(this)
            if( isShow($node) ){
              loadImg($node)
            }
          })
        }
    
        function isShow($node){ // 判断图片是否在视野中
          return $node.offset().top <= $(window).height() + $(window).scrollTop()
        }
    
        function loadImg($img){ 
          $img.attr('src', $img.attr('data-src'))
          $img.attr('data-isLoaded', 1) // 区别图片是否被加载过,防止重新加载
        }
    
    
  • 相关阅读:
    JavaScript DOM API初步(整理)
    MySQL与Oracle之间互相拷贝数据的Java程序
    MySQL与Oracle的区别之我见
    js原生:封装document.getElementByClassName()函数
    js和jquery获取父级元素、子级元素、兄弟元素的方法
    封装bt轮播图淡入淡出效果样式
    Bootstrap每天必学之导航条
    全面解析Bootstrap图片轮播效果
    JS如何获取页面可见区域高度
    怎样才能成为优秀的前端工程师
  • 原文地址:https://www.cnblogs.com/sunidol/p/11355863.html
Copyright © 2011-2022 走看看