实现图片懒加载的三种方式(前端路由懒加载原理)

1.什么是图片懒加载图片懒加载就是鼠标滑动到哪里,图片加载到哪里。总的来说,一般页面打开,会同时加载页面所有的图片,如果页面的图片请求太多会造成很卡很慢的现象,为了避免这一现象,利用懒加载图片的方法,提高性能(典型:淘宝)2.实现图片懒加载的原理图片懒加载的实现原理:将图片的地址放在data-set属性中,由于图片并没有在src中,并不会发送http请求。比…

大家好,又见面了,我是你们的朋友全栈君。

1.什么是图片懒加载

        图片懒加载就是鼠标滑动到哪里,图片加载到哪里。总的来说,一般页面打开,会同时加载页面所有的图片,如果页面的图片请求太多会造成很卡很慢的现象,为了避免这一现象,利用懒加载图片的方法,提高性能(典型:淘宝)

2. 实现图片懒加载的原理

     图片懒加载的实现原理:将图片的地址放在data-set属性中,由于图片并没有在src中,并不会发送http请求。比较图片到整个页面距离(Y)和  页面滑动的距离 (X) +  浏览器可视区域的大小(Z) ,Y小于两者之和,则图片就显示出来,将图片的data-set属性换为src属性

实现图片懒加载的三种方式(前端路由懒加载原理)

3. Vue的图片懒加载实现

  Vue的图片懒加载很简单

    (1) 下载插件       npm install vue-lazyload –save 或 yarn add  vue-lazyload 

    (2) main.js    引入插件  

                           

import Vue from 'vue'
import VueLazyLoad from 'vue-lazyload'

Vue.use(VueLazyLoad)   
或
Vue.use(VueLazyload, {
  preLoad: 1.3, // 提前加载高度(数字 1 表示 1 屏的高度) 默认值:1.3
  error: 'dist/error.png',     // 当加载图片失败的时候
  loading: 'dist/loading.gif', // 图片加载状态下显示的图片
  attempt: 3   //  加载错误后最大尝试次数 默认值:3
})

(3)在组件中使用:    

对于img

        v-lazy=”‘/static/img/product/’ + productshow1″   

      // productshow1为路径地址,直接将变量写在data中使用 data: () =>{productshow1:”productshow1.png” }

对于背景图片

        v-lazy:backgroundImage = “showMessage.imageUrl”  //showMessage.imageUrl为变量名,图片的地址

          

4.jquery 实现图片懒加载

    jquery实现主要是依赖了lazyload.js

(1)引入插件 

<script src="jquery.js" type="text/javascript"></script> 
<script src="js/jquery.lazyload.js" type="text/javascript"></script> 

(2)使用

// 最简单的使用,不带参数
$('img').lazyload();

 // 带参数(配置对象),下面配置对象中的各个属性值都是默认的
$('img').lazyload({
  threshold : 0,  //图片距离可视窗口的距离为多少px开始加载图片
  failure_limit : 3,  //img加载失败到第4张开始停止加载图片
  event : “scroll”,  //触发事件
  effect : “show”,   //显示方式
  container : window,  //容器
  data_attribute : “original”,  //属性
  skip_invisible : true,   //不进行加载隐藏的图片
  appear : null,  //在img触发appear事件时执行的回调
  load : null,   //在img触发load事件时执行的回调
placeholder:"data:image/png;base64,,,,,"   // 图片占位符
});

5.原生js实现图片懒加载

获取到所有需要用到的高度,和加载的图片,修该data-set 属性实现懒加载

html部分

<img data-set ="img/one.jpg" src ="">
<img data-set ="img/two.jpg" src ="">
<img data-set ="img/three.jpg" src ="">
<img data-set ="img/four.jpg" src ="">
<img data-set ="img/five.jpg" src ="">

javaScript部分

<script type="text/javascript>
 var imgs = document.querySelectorAll("img");  //获取所有的img元素
 window.onscroll = function(){     //定义触发事件
     var showViewH = document.documentElement.clientHeight;  //获取可视区域的高度
     //获取滚动的高度(兼容性写法)
     var scrollH = document.body.scrollTop || document.documentElement.scrollTop;  
     for(var i =0 ; i<imgs.length;i ++){
         //判断图片到页面的高度与可视高度和滑动高度的大小
          if (imgs[i].offsetTop < showViewH + scrollH ) {  
                    if (imgs[i].getAttribute('src') == '') {
                        imgs[i].src = imgs[i].getAttribute('data-set');
                    }
        }
 }
</script>

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/128343.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • JAVA读取csv文件_java读取csv文件某一列

    JAVA读取csv文件_java读取csv文件某一列csv文件的介绍以下是来自百度百科的介绍逗号分隔值(Comma-SeparatedValues,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。纯文本意味着该文件是一个字符序列,不含必须像二进制数字那样被解读的数据。CSV文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符。通常,所有记录都有完全相同的字段序列。通常都是纯文本文件。建议使用WORDPAD或是记事本来

    2025年6月1日
    3
  • 微型计算机原理与接口技术答案第四版_微机接口与原理技术第三版课后答案

    微型计算机原理与接口技术答案第四版_微机接口与原理技术第三版课后答案微型计算机原理与接口技术第三版答案第1章练习题1.选择题(1)BCA(2)A(3)DA(4)C2.填空(1)10,12(2)取出指令,执行指令(3)(4)内部码3.简答题(1)微处理器,微型计算机和微型计算机系统三者有何联系与区别?答:微处理器是把原来的中央处理单元CPU的复杂电路(包括运算器和控制器)做在一片或…

    2022年10月2日
    4
  • 0元搭建卡盟主站_哪个卡盟平台好

    0元搭建卡盟主站_哪个卡盟平台好设置桶配额功能说明设置桶的配额值,单位为字节,支持的最大值为263-1,配额值设为0表示桶的配额没有上限。方法定义1.ObsClient->setBucketQuota(array$parameter)2.ObsClient->setBucketQuotaAsync(array何查看桶标签://引入依赖库require’vendor/autoload.php’;//…

    2022年8月13日
    7
  • ZIP 压缩解压命令

    ZIP 压缩解压命令压缩一个文件,打开cmd窗口 zip f:\wenjian.zip f:\wenjian.txt压缩一种格式的文件 zip f:\wenjian.zip f:\*.txt压缩文件夹及里面的内容 -r表示压缩文件夹wenjian及里面的内容 zip-rf:\wenjian.zip wenjian  移除压缩包里的一

    2022年5月16日
    57
  • java面试宝典2019

    java面试宝典2019java面试宝典20191、meta标签的作用是什么2、ReenTrantLock可重入锁(和synchronized的区别)总结3、Spring中的自动装配有哪些限制?4、什么是可变参数?5、什么是领域模型(domainmodel)?贫血模型(anaemicdomainmodel)和充血模型(richdomainmodel)有什么区别?6、说说http,http…

    2022年7月14日
    28
  • ASP.NET跳转网页的三种方法的比较(转+修)

    ASP.NET跳转网页的三种方法的比较(转+修)方法1response.redirect这个跳转页面的方法跳转的速度不快,因为它要走2个来回(2次postback),但他可以跳转到任何页面,没有站点页面限制(即可以由雅虎跳到新浪),同时不能跳过登录保护。但速度慢是其最大缺陷!redirect跳转机制:首先是发送一个http请求到客户端,通知需要跳转到新页面,然后客户端在发送跳转请求到服务器端。需要注意的是跳转后内部空间保存的所…

    2022年7月20日
    17

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号