快速实现JS图片懒加载(可视区域加载)示例代码
发布时间 - 2026-01-10 22:18:28 点击率:次js懒加载图片

如何提高网页加载速度?在网页中有许多img标签,这些标签就是图片,其属性src则是指向服务器地址,当浏览器从上往下读取到src标签中的地址时,浏览器就会开启线程,加载这张图片。而并不是等到整张页面都解析完成才加载图片。我们要做的就是加载用户可视范围内的图片。
js懒加载图片的目的
1.网页优化,提高网页加载速度
2.页面优化友好,提高SEO收录与排名
3.提高用户体验,减少服务器压力
实例代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>图片懒加载(可视区域加载)</title>
<style>
* {
padding: 0px;
margin: 0px;
}
html,
body {
width: 100%;
min-height: 100%;
}
#SB {
margin: 0;
padding: 0;
list-style: none;
}
#SB .in {
border: 1px solid red;
margin: 10px;
text-align: center;
height: 400px;
width: 400px;
float: left;
}
.in img {
border: none;
vertical-align: middle;
height: 400px;
width: 400px;
}
</style>
</head>
<body>
<ul id="SB">
<li class="in"><img src="" data-imgurl="img/1.jpg"></li>
<li class="in"><img src="" data-imgurl="img/2.jpg"></li>
<li class="in"><img src="" data-imgurl="img/3.jpg"></li>
<li class="in"><img src="" data-imgurl="img/4.jpg"></li>
<li class="in"><img src="" data-imgurl="img/5.jpg"></li>
<li class="in"><img src="" data-imgurl="img/6.jpg"></li>
<li class="in"><img src="" data-imgurl="img/7.jpg"></li>
<li class="in"><img src="" data-imgurl="img/8.jpg"></li>
<li class="in"><img src="" data-imgurl="img/9.jpg"></li>
<li class="in"><img src="" data-imgurl="img/10.jpg"></li>
<li class="in"><img src="" data-imgurl="img/11.jpg"></li>
<li class="in"><img src="" data-imgurl="img/12.jpg"></li>
<li class="in"><img src="" data-imgurl="img/13.jpg"></li>
<li class="in"><img src="" data-imgurl="img/14.jpg"></li>
<li class="in"><img src="" data-imgurl="img/15.jpg"></li>
<li class="in"><img src="" data-imgurl="img/16.jpg"></li>
<li class="in"><img src="" data-imgurl="img/1.jpg"></li>
<li class="in"><img src="" data-imgurl="img/2.jpg"></li>
<li class="in"><img src="" data-imgurl="img/3.jpg"></li>
<li class="in"><img src="" data-imgurl="img/4.jpg"></li>
<li class="in"><img src="" data-imgurl="img/5.jpg"></li>
<li class="in"><img src="" data-imgurl="img/6.jpg"></li>
<li class="in"><img src="" data-imgurl="img/7.jpg"></li>
<li class="in"><img src="" data-imgurl="img/8.jpg"></li>
<li class="in"><img src="" data-imgurl="img/9.jpg"></li>
<li class="in"><img src="" data-imgurl="img/10.jpg"></li>
<li class="in"><img src="" data-imgurl="img/11.jpg"></li>
<li class="in"><img src="" data-imgurl="img/12.jpg"></li>
<li class="in"><img src="" data-imgurl="img/13.jpg"></li>
<li class="in"><img src="" data-imgurl="img/14.jpg"></li>
<li class="in"><img src="" data-imgurl="img/15.jpg"></li>
<li class="in"><img src="" data-imgurl="img/16.jpg"></li>
<li class="in"><img src="" data-imgurl="img/1.jpg"></li>
<li class="in"><img src="" data-imgurl="img/2.jpg"></li>
<li class="in"><img src="" data-imgurl="img/3.jpg"></li>
<li class="in"><img src="" data-imgurl="img/4.jpg"></li>
<li class="in"><img src="" data-imgurl="img/5.jpg"></li>
<li class="in"><img src="" data-imgurl="img/6.jpg"></li>
<li class="in"><img src="" data-imgurl="img/7.jpg"></li>
<li class="in"><img src="" data-imgurl="img/8.jpg"></li>
<li class="in"><img src="" data-imgurl="img/9.jpg"></li>
<li class="in"><img src="" data-imgurl="img/10.jpg"></li>
<li class="in"><img src="" data-imgurl="img/11.jpg"></li>
<li class="in"><img src="" data-imgurl="img/12.jpg"></li>
<li class="in"><img src="" data-imgurl="img/13.jpg"></li>
<li class="in"><img src="" data-imgurl="img/14.jpg"></li>
<li class="in"><img src="" data-imgurl="img/15.jpg"></li>
<li class="in"><img src="" data-imgurl="img/16.jpg"></li>
</ul>
<script type="text/javascript">
var aImages = document.getElementById("SB").getElementsByTagName('img'); //获取id为SB的文档内所有的图片
loadImg(aImages);
window.onscroll = function() { //滚动条滚动触发
loadImg(aImages);
};
//getBoundingClientRect 是图片懒加载的核心
function loadImg(arr) {
for(var i = 0, len = arr.length; i < len; i++) {
if(arr[i].getBoundingClientRect().top < document.documentElement.clientHeight && !arr[i].isLoad) {
arr[i].isLoad = true; //图片显示标志位
//arr[i].style.cssText = "opacity: 0;";
(function(i) {
setTimeout(function() {
if(arr[i].dataset) { //兼容不支持data的浏览器
aftLoadImg(arr[i], arr[i].dataset.imgurl);
} else {
aftLoadImg(arr[i], arr[i].getAttribute("data-imgurl"));
}
arr[i].style.cssText = "transition: 1s; opacity: 1;" //相当于fadein
}, 500)
})(i);
}
}
}
function aftLoadImg(obj, url) {
var oImg = new Image();
oImg.onload = function() {
obj.src = oImg.src; //下载完成后将该图片赋给目标obj目标对象
}
oImg.src = url; //oImg对象先下载该图像
}
</script>
</body>
</html>
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。
# js
# 图片懒加载原理
# 懒加载
# js实现图片懒加载
# js获取滚动距离的方法
# js/jquery获取浏览器窗口可视区域高度和宽度以及滚动条高度实现代码
# js获取浏览器的可视区域尺寸的实现代码
# js获取元素到可视区的距离、浏览器窗口滚动距离及元素距离浏览器顶部距离
# 加载
# 就会
# 则是
# 中有
# 这张
# 要做
# 不支持
# 这篇文章
# 谢谢大家
# 往下
# 将该
# 整张
# 滚动条
# 文档
# 完成后
# 有疑问
# margin
# title
# padding
# px
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全
DeepSeek是免费使用的吗 DeepSeek收费模式与Pro版本功能详解
简单实现jsp分页
在线教育网站制作平台,山西立德教育官网?
如何在沈阳梯子盘古建站优化SEO排名与功能模块?
Laravel如何与Pusher实现实时通信?(WebSocket示例)
米侠浏览器网页背景异常怎么办 米侠显示修复
打造顶配客厅影院,这份100寸电视推荐名单请查收
合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?
,怎么在广州志愿者网站注册?
jQuery validate插件功能与用法详解
Laravel的.env文件有什么用_Laravel环境变量配置与管理详解
Laravel Pest测试框架怎么用_从PHPUnit转向Pest的Laravel测试教程
Laravel如何使用Gate和Policy进行授权?(权限控制)
网站制作企业,网站的banner和导航栏是指什么?
Laravel软删除怎么实现_Laravel Eloquent SoftDeletes功能使用教程
jQuery 常见小例汇总
Laravel N+1查询问题如何解决_Eloquent预加载(Eager Loading)优化数据库查询
宙斯浏览器文件分类查看教程 快速筛选视频文档与图片方法
佛山企业网站制作公司有哪些,沟通100网上服务官网?
香港服务器部署网站为何提示未备案?
laravel怎么为API路由添加签名中间件保护_laravel API路由签名中间件保护方法
如何基于云服务器快速搭建网站及云盘系统?
html5源代码发行怎么设置权限_访问权限控制方法与实践【指南】
千库网官网入口推荐 千库网设计创意平台入口
php结合redis实现高并发下的抢购、秒杀功能的实例
JavaScript实现Fly Bird小游戏
标题:Vue + Vuex + JWT 身份认证的正确实践与常见误区解析
今日头条AI怎样推荐抢票工具_今日头条AI抢票工具推荐算法与筛选【技巧】
如何挑选高效建站主机与优质域名?
Midjourney怎样加参数调细节_Midjourney参数调整技巧【指南】
Laravel如何使用Guzzle调用外部接口_Laravel发起HTTP请求与JSON数据解析【详解】
Laravel如何处理文件下载请求?(Response示例)
新三国志曹操传主线渭水交兵攻略
LinuxCD持续部署教程_自动发布与回滚机制
详解Android——蓝牙技术 带你实现终端间数据传输
南京网站制作费用,南京远驱官方网站?
Laravel项目怎么部署到Linux_Laravel Nginx配置详解
简单实现Android文件上传
Laravel Asset编译怎么配置_Laravel Vite前端构建工具使用
Win11怎么修改DNS服务器 Win11设置DNS加速网络【指南】
教你用AI将一段旋律扩展成一首完整的曲子
Laravel distinct去重查询_Laravel Eloquent去重方法
怎样使用JSON进行数据交换_它有什么限制
Win11怎样安装网易有道词典_Win11安装词典教程【步骤】
Laravel怎么配置S3云存储驱动_Laravel集成阿里云OSS或AWS S3存储桶【教程】
Chrome浏览器标签页分组怎么用_谷歌浏览器整理标签页技巧【效率】
Laravel如何使用Spatie Media Library_Laravel图片上传管理与缩略图生成【步骤】
PHP 500报错的快速解决方法
Laravel中的Facade(门面)到底是什么原理

