您现在的位置是:网站首页>内容内容
网站图片延迟加载的实现_资源网
2023-12-06 17:34:44
【512953070@qq.com】
234人已围观
简介 网站图片延迟加载的实现_资源网
图片延迟加载也称懒加载,通常应用于图片比较多的网页,如果一个页面图片比较多,且页面高度或宽度有好几屏,页面初次加载时,只显示可视区域的图片,当页面滚动的时候,图片进入了可视区域再进行加载,这样可以显著的提高页面的加载速度,更少的图片并发请求数也可以减轻服务器的压力。如果用户仅仅在首屏停留,还可以节省流量。如果TAB中的图片较多,也同样可以应用于TAB中,当触发TAB时再进行图片的加载。
图片延迟加载的原理比较简单,先将图片的真实地址缓存在一个自定义的属性(lazy-src)中,而src地址使用一个1×1的全透明的占位图片来代替,当然占位图片也可以是其他的图片。
- <img src="images/placeholder.png" lazy-src="images/realimg.jpg" />
因为是使用javascript来加载图片,如果用户禁用了javascript,可以设置一个替代的方案。
- <img src="images/placeholder.png" lazy-src="images/realimg.jpg" alt="" />
- <noscript><img src="images/realimg.jpg" alt="" />noscript>
页面初次加载时获取图片在页面中的位置并缓存(每次取offset的值会引发页面的reflow),计算出可视区域,当图片的位置出现在可视区域中,将src的值替换成真实的地址,此时图片就开始加载了。
当页面滚动的时候,再判断图片已经缓存的位置值是否出现在可视区域内,进行替换src加载。当所有的图片都加载完之后,将相应的触发事件卸载,避免重复操作引起的内存泄漏。将整个窗口看成是一个大容器,那么也可以在页面中设置一个小容器,在小容器中也同样可以实现图片的延迟加载。
下面是实现的代码,我写成了JQuery插件。
- (function( $ ){
- $.fn.imglazyload = function( options ){
- var o = $.extend({
- attr : 'lazy-src',
- container : window,
- event : 'scroll',
- fadeIn : false,
- threshold : 0,
- vertical : true
- }, options ),
- event = o.event,
- vertical = o.vertical,
- container = $( o.container ),
- threshold = o.threshold,
- // 将jQuery对象转换成DOM数组便于操作
- elems = $.makeArray( $(this) ),
- dataName = 'imglazyload_offset',
- OFFSET = vertical ? 'top' : 'left',
- SCROLL = vertical ? 'scrollTop' : 'scrollLeft',
- winSize = vertical ? container.height() : container.width(),
- scrollCoord = container[ SCROLL ](),
- docSize = winSize + scrollCoord;
- // 延迟加载的触发器
- var trigger = {
- init : function( coord ){
- return coord >= scrollCoord &&
- coord <= ( docSize + threshold );
- },
- scroll : function( coord ){
- var scrollCoord = container[ SCROLL ]();
- return coord >= scrollCoord &&
- coord <= ( winSize + scrollCoord + threshold );
- },
- resize : function( coord ){
- &
热评
- Win11重启速度慢怎么办?Win11重启慢的解决方法_windows11_Windows系列_操作系统_
- 微软透露下一次更新将如何加速Win11系统_windows11_Windows系列_操作系统_
- Win11 预览版 22563 出现重大 Bug:Win + X 导致资源管理器崩溃,解决方案出炉_windows11_Windows系列_操作系统_
- Win11怎么查看网卡速率?Win11查看网卡速率是千兆还是百兆方法_windows11_Windows系列_操作系统_
- Win11怎么设置显卡直连?Win11显卡直连设置教程_windows11_Windows系列_操作系统_
- 运行速度更快,微软 Win11/10 Edge 浏览器正测试“性能检测器”_windows11_Windows系列_操作系统_
- LTSC长期服务版!基于Win11,微软Windows Server VNext预览版25066发布(附 ISO 镜像下_windows11_Windows系列_操作系统_
- Win11如何开启3d加速 ? Win11开启3d加速的方法_windows11_Windows系列_操作系统_
- Win11无法输入wifi密码输怎么办?Win11 wifi密码输入不了的原因以及解决方法_windows11_Windows系列_操作系统_
- Win11开始菜单关机键不见了怎么办?Win11开始菜单关机键不见的解决方法_windows11_Windows系列_操作系统_
点击排行

- 微软透露下一次更新将如何加速Win11系统_windows11_Windows系列_操作系统_
- Win11 预览版 22563 出现重大 Bug:Win + X 导致资源管理器崩溃,解决方案出炉_windows11_Windows系列_操作系统_
- Win11怎么查看网卡速率?Win11查看网卡速率是千兆还是百兆方法_windows11_Windows系列_操作系统_
- Win11怎么设置显卡直连?Win11显卡直连设置教程_windows11_Windows系列_操作系统_
- 运行速度更快,微软 Win11/10 Edge 浏览器正测试“性能检测器”_windows11_Windows系列_操作系统_
- LTSC长期服务版!基于Win11,微软Windows Server VNext预览版25066发布(附 ISO 镜像下_windows11_Windows系列_操作系统_
- Win11如何开启3d加速 ? Win11开启3d加速的方法_windows11_Windows系列_操作系统_
- Win11无法输入wifi密码输怎么办?Win11 wifi密码输入不了的原因以及解决方法_windows11_Windows系列_操作系统_
- Win11开始菜单关机键不见了怎么办?Win11开始菜单关机键不见的解决方法_windows11_Windows系列_操作系统_
本栏推荐

-
微软透露下一次更新将如何加速Win11系统_windows11_Windows系列_操作系统_
-
Win11 预览版 22563 出现重大 Bug:Win + X 导致资源管理器崩溃,解决方案出炉_windows11_Windows系列_操作系统_
-
Win11怎么查看网卡速率?Win11查看网卡速率是千兆还是百兆方法_windows11_Windows系列_操作系统_
-
Win11怎么设置显卡直连?Win11显卡直连设置教程_windows11_Windows系列_操作系统_
-
运行速度更快,微软 Win11/10 Edge 浏览器正测试“性能检测器”_windows11_Windows系列_操作系统_
-
LTSC长期服务版!基于Win11,微软Windows Server VNext预览版25066发布(附 ISO 镜像下_windows11_Windows系列_操作系统_
-
Win11如何开启3d加速 ? Win11开启3d加速的方法_windows11_Windows系列_操作系统_
-
Win11无法输入wifi密码输怎么办?Win11 wifi密码输入不了的原因以及解决方法_windows11_Windows系列_操作系统_
-
Win11开始菜单关机键不见了怎么办?Win11开始菜单关机键不见的解决方法_windows11_Windows系列_操作系统_