本文为大家分享了js实现延迟加载思想和首屏延迟加载的具体代码,供大家参考,具体内容如下

作用:保证页面打开的速度(3s之内如果首页打不开就已经算是死亡页面了)
原理:
1)、对于首屏内容中的图片:首先给对应的区域一张默认图片占的位置(默认图需要非常的小,一般可以维持在5kb以内),当首屏内容都加载完成后(或者也可以给一个延迟的时间),我在开始加载真实的图片
2)、对于其他屏中的图片:也是给一张默认的图片占位,当滚动条滚动到对应区域的时候,我们再开始加载真实的图片
扩展:数据的异步加载,开始只把前两屏的数据加载绑定出来,后面的数据不进行处理,当页面滚动到对应区域的时候,在重新请求数据绑定渲染数据
具体可以看一下下图
首屏的延迟加载代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
*{
padding:0;
margin:0;
font-size:14px;
}
#banner{
margin:10px auto;
width:300px;
height:150px;
border:1px solid green;
background:url('img/default.gif') no-repeat center center;/*给当前的区域加一个默认图占位,告诉用户此处的图片正在加载中*/
}
#banner img{
display:none;/*在开始的时候IMG的SRC属性没有地址,这样的话在IE浏览器中会显示一张碎图,不美观,所以我们让其默认是隐藏的,当真实的图片加载完成后在显示*/
width:100%;
height:100%;
}
</style>
</head>
<body>
<div id='banner'>
<!--trueImg是当前标签的自定义属性,存储的是真实图片的地址-->
<img src="" alt="" trueImg="img/jd.jpg">
</div>
<script>
var banner = document.getElementById('banner'),imgFir = banner.getElementsByTagName('img')[0]
window.setTimeout(function(){
// imgFir.src = imgFir.getAttribute('trueImg');
// imgFir.style.display = "block"
//以上处理还是不完整的:如果我们获取的真实图片的地址是错误的,赋值给IMG的SRC属性的时候,不仅控制台会报错,而且页面中还会出现碎图
//获取图片的地址,验证地址的有效性,是有效的才赋值,不是有效的是不进行处理的
// var oImg = document.createElement('img')
var oImg = new Image;//创建一个临时的IMG标签
oImg.src = imgFir.getAttribute('trueImg');
oImg.onload = function(){//当图片能够正常加载
imgFir.src = this.src;
imgFir.style.display = "block";
oImg = null
console.log('加载完成')
}
console.log('正在加载中...')
},500)
</script>
</body>
</html>
多屏单张图片的延迟加载
具体代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
*{
padding:0;
margin:0;
font-size:14px;
}
#banner{
margin:10px auto;
width:300px;
height:150px;
border:1px solid green;
background:url('img/default.gif') no-repeat center center;/*给当前的区域加一个默认图占位,告诉用户此处的图片正在加载中*/
}
#banner img{
display:none;/*在开始的时候IMG的SRC属性没有地址,这样的话在IE浏览器中会显示一张碎图,不美观,所以我们让其默认是隐藏的,当真实的图片加载完成后在显示*/
width:100%;
height:100%;
}
</style>
</head>
<body>
<div id='banner'>
<!--trueImg是当前标签的自定义属性,存储的是真实图片的地址-->
<img src="" alt="" trueImg="img/jd.jpg">
</div>
<script>
var banner = document.getElementById('banner'),imgFir = banner.getElementsByTagName('img')[0]
window.onscroll = function(){
if(banner.isLoad){
return;
}
var A = banner.offsetHeight+utils.offset(banner).top;
var B = utils.win("clientHeight") + utils.win("scrollTop");
if(A<B){
//当条件成立,我们加载真实的图片,第一次加载完成后,我们在让页面滚动的过程中A<B一直成立,又重新执行下面的操作,导致了重复给一个容器中的图片进行加载
var oImg = new Image;
oImg.src = imgFir.getAttribute('trueImg');
oImg.onload = function(){
imgFir.src = this.src;
imgFir.style.display = 'block';
oImg = null;
}
banner.isLoad = true;//设置一个自定义属性告诉浏览器我已经把图片加载完了(不管是否正常的加载,只要处理过一次以后都不需要处理了)
}
}
</script>
</body>
</html>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# js
# 延迟加载
# JS同步、异步、延迟加载的方法
# JS实现非首屏图片延迟加载的示例
# JS图片延迟加载插件LazyImgv1.0用法分析【附demo源码下载】
# Javascript之图片的延迟加载的实例详解
# js实现多张图片延迟加载效果
# js图片加载效果实例代码(延迟加载+瀑布流加载)
# js实现延迟加载的几种方法
# js图片延迟加载(Lazyload)三种实现方式
# JS实现图片延迟加载并淡入淡出效果的简单方法
# js实现延迟加载的几种方法详解
# 加载
# 的是
# 自定义
# 完成后
# 加载中
# 绑定
# 让其
# 中会
# 这样的话
# 我在
# 都不
# 还会
# 看一下
# 报错
# 大家分享
# 首页
# 打不开
# 创建一个
# 者也
# 具体内容
相关文章:
微信h5制作网站有哪些,免费微信H5页面制作工具?
c# 在高并发场景下,委托和接口调用的性能对比
零基础网站服务器架设实战:轻量应用与域名解析配置指南
整人网站在线制作软件,整蛊网站退不出去必须要打我是白痴才能出去?
javascript中对象的定义、使用以及对象和原型链操作小结
建站之星五站合一营销型网站搭建攻略,流量入口全覆盖优化指南
如何在IIS管理器中快速创建并配置网站?
建站之星免费模板:自助建站系统与智能响应式一键生成
PHP 500报错的快速解决方法
c++如何打印函数堆栈信息_c++ backtrace函数与符号名解析【方法】
免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?
已有域名如何快速搭建专属网站?
常州企业网站制作公司,全国继续教育网怎么登录?
如何快速搭建高效香港服务器网站?
如何用腾讯建站主机快速创建免费网站?
建站之星如何开启自定义404页面避免用户流失?
盐城做公司网站,江苏电子版退休证办理流程?
金*站制作公司有哪些,金华教育集团官网?
实例解析angularjs的filter过滤器
七夕网站制作视频,七夕大促活动怎么报名?
建站之星如何快速解决建站难题?
已有域名能否直接搭建网站?
如何通过网站建站时间优化SEO与用户体验?
如何用免费手机建站系统零基础打造专业网站?
成都响应式网站开发,dw怎么把手机适应页面变成网页?
如何用AWS免费套餐快速搭建高效网站?
建站之星导航菜单设置与功能模块配置全攻略
广州顶尖建站服务:企业官网建设与SEO优化一体化方案
制作宣传网站的软件,小红书可以宣传网站吗?
IOS倒计时设置UIButton标题title的抖动问题
建站主机功能解析:服务器选择与快速搭建指南
如何设置并定期更换建站之星安全管理员密码?
如何制作网站标识牌,动态网站如何制作(教程)?
网站制作网站,深圳做网站哪家比较好?
为什么Go需要go mod文件_Go go mod文件作用说明
小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?
网站插件制作软件免费下载,网页视频怎么下到本地插件?
手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?
网站制作公司,橙子建站是合法的吗?
C#如何在一个XML文件中查找并替换文本内容
免费公司网站制作软件,如何申请免费主页空间做自己的网站?
建站之星安装后如何配置SEO及设计样式?
如何在IIS中新建站点并配置端口与物理路径?
头像制作网站在线制作软件,dw网页背景图像怎么设置?
保定网站制作方案定制,保定招聘的渠道有哪些?找工作的人一般都去哪里看招聘信息?
如何快速搭建高效可靠的建站解决方案?
建站之星如何保障用户数据免受黑客入侵?
清除minerd进程的简单方法
手机网站制作与建设方案,手机网站如何建设?
Avalonia如何实现跨窗口通信 Avalonia窗口间数据传递
*请认真填写需求信息,我们会在24小时内与您取得联系。