博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
图片延迟加载(lazyload)的实现原理
阅读量:5104 次
发布时间:2019-06-13

本文共 902 字,大约阅读时间需要 3 分钟。

此前在浏览一些网站的时候,发现他们网站的图片都是你“鼠标”滚到哪,图片才会加载显示。当时觉得好神奇,怎么会这么“跟手”呢。

核心原理是:

1 设置一个定时器,计算每张图片是否会随着滚动条的滚动,而出现在视口(也就是浏览器中的展现网站的空白部分)中;

2 为<img>标签设置一个暂存图片URL的自定义属性(例如loadpic),当图片出现在视口时,再将loadpic的值赋给图片的src属性;

最后,贴出分别用原生js和jQuery实现该功能的实现方法:

1 原生JavaScript的实现方法

2 jQuery的实现方法

/*** 图片的src实现原理*/$(document).ready(function(){    // 获取页面视口高度    var viewportHeight = $(window).height();    var lazyload = function() {        // 获取窗口滚动条距离        var scrollTop = $(window).scrollTop();        $('img').each(function(){        // 判断 视口高度+滚动条距离 与 图片元素距离文档原点的高度                 var x = scrollTop + viewportHeight - $(this).position().top;        // 如果大于0 即该元素能被浏览者看到,则将暂存于自定义属性loadpic的值赋值给真正的src                    if (x > 0)        {            $(this).attr('src',$(this).attr('loadpic'));         }    })    }    // 创建定时器 “实时”计算每个元素的src是否应该被赋值    setInterval(lazyload,100);});

 

转载于:https://www.cnblogs.com/fxtt/p/6149101.html

你可能感兴趣的文章
Vue_(组件通讯)子组件向父组件传值
查看>>
jvm参数
查看>>
我对前端MVC的理解
查看>>
Silverlight实用窍门系列:19.Silverlight调用webservice上传多个文件【附带源码实例】...
查看>>
2016.3.31考试心得
查看>>
mmap和MappedByteBuffer
查看>>
Linux的基本操作
查看>>
转-求解最大连续子数组的算法
查看>>
对数器的使用
查看>>
OracleOraDb11g_home1TNSListener服务启动后停止,某些服务在未由其他服务或程序使用时将自己主动停止...
查看>>
Redis用户添加、分页、登录、注册、加关注案例
查看>>
练习2
查看>>
【ASP.NET】演绎GridView基本操作事件
查看>>
ubuntu无法解析主机错误与解决的方法
查看>>
尚学堂Java面试题整理
查看>>
MySQL表的四种分区类型
查看>>
[BZOJ 3489] A simple rmq problem 【可持久化树套树】
查看>>
STM32单片机使用注意事项
查看>>
swing入门教程
查看>>
好莱坞十大导演排名及其代表作,你看过多少?
查看>>