最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

原生javascript实现图片滚动、延时加载功能

来源:动视网 责编:小采 时间:2020-11-27 21:31:44
文档

原生javascript实现图片滚动、延时加载功能

原生javascript实现图片滚动、延时加载功能:这篇文章主要介绍了使用原生javascript实现图片滚动、延时加载功能,思路与方法均分享给大家,希望对大家能有所帮助。实现效果:下拉滚动条时,图片出现在可见区域时,才开始加载思路:(1)img标签,把真实的图片地址,放在自己设置的属性里面,如 lazy
推荐度:
导读原生javascript实现图片滚动、延时加载功能:这篇文章主要介绍了使用原生javascript实现图片滚动、延时加载功能,思路与方法均分享给大家,希望对大家能有所帮助。实现效果:下拉滚动条时,图片出现在可见区域时,才开始加载思路:(1)img标签,把真实的图片地址,放在自己设置的属性里面,如 lazy
 这篇文章主要介绍了使用原生javascript实现图片滚动、延时加载功能,思路与方法均分享给大家,希望对大家能有所帮助。

实现效果:下拉滚动条时,图片出现在可见区域时,才开始加载

思路:

(1)img标签,把真实的图片地址,放在自己设置的属性里面,如 lazy-src

(2)获取img离页面的高度(在JQ里是offset().top),原生是:

img.getBoundingClientRect().top + document.body.scrollTop||document.documentElement.scrollTop

(3)判断img出现的位置是否在可见区域里:

在浏览器的可见区域,justTop>scrollTop&&offsetTop<(scrollTop+windowHeight),这里的justTop是图片的offsetTop+图片高度

//保存document在变量里,减少对document的查询
 var doc = document;
 for(var n=0,i = this.oImg.length;n<i;n++){
 //获取图片占位符图片地址
 var hSrc = this.oImg[n].getAttribute(this.sHolder_src);
 if(hSrc){
 var scrollTop = doc.body.scrollTop||doc.documentElement.scrollTop,
 windowHeight = doc.documentElement.clientHeight,
 offsetTop = this.oImg[n].getBoundingClientRect().top + scrollTop,
 imgHeight = this.oImg[n].clientHeight,
 justTop = offsetTop + imgHeight;
 // 判断图片是否在可见区域
 if(justTop>scrollTop&&offsetTop<(scrollTop+windowHeight)){

 this.isLoad(hSrc,n);
 }
 }
 }

以下为详细代码:

function LGY_imgScrollLoad(option){
 this.oImg = document.getElementById(option.wrapID).getElementsByTagName('img');
 this.sHolder_src = option.holder_src;
 this.int();
 }
 LGY_imgScrollLoad.prototype = {
 loadImg:function(){
 //保存document在变量里,减少对document的查询
 var doc = document;
 for(var n=0,i = this.oImg.length;n<i;n++){
 //获取图片占位符图片地址
 var hSrc = this.oImg[n].getAttribute(this.sHolder_src);
 if(hSrc){
 var scrollTop = doc.body.scrollTop||doc.documentElement.scrollTop,
 windowHeight = doc.documentElement.clientHeight,
 offsetTop = this.oImg[n].getBoundingClientRect().top + scrollTop,
 imgHeight = this.oImg[n].clientHeight,
 justTop = offsetTop + imgHeight;
 // 判断图片是否在可见区域
 if(justTop>scrollTop&&offsetTop<(scrollTop+windowHeight)){
 //alert(offsetTop);
 this.isLoad(hSrc,n);
 }
 }

 }
 },
 isLoad:function(src,n){
 var src = src,
 n = n,
 o_img = new Image(),
 _that = this;
 o_img.onload = (function(n){
 _that.oImg[n].setAttribute('src',src);
 _that.oImg[n].removeAttribute(_that.sHolder_src);
 })(n);
 o_img.src = src;
 },
 int:function(){
 this.loadImg();
 var _that = this,
 timer = null;
 // 滚动:添加定时器,防止频繁调用loadImg函数
 window.onscroll = function(){
 clearTimeout(timer);
 timer = setTimeout(function(){
 _that.loadImg();
 },100);
 }
 }
 }

效果图:

文档

原生javascript实现图片滚动、延时加载功能

原生javascript实现图片滚动、延时加载功能:这篇文章主要介绍了使用原生javascript实现图片滚动、延时加载功能,思路与方法均分享给大家,希望对大家能有所帮助。实现效果:下拉滚动条时,图片出现在可见区域时,才开始加载思路:(1)img标签,把真实的图片地址,放在自己设置的属性里面,如 lazy
推荐度:
标签: 实现 滚动 js
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top