我的编程空间,编程开发者的网络收藏夹
学习永远不晚

JavaScript中怎么实现页面滚动图片加载功能

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

JavaScript中怎么实现页面滚动图片加载功能

JavaScript中怎么实现页面滚动图片加载功能,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

原理:

1.给页面绑定滚动事件;

2.加载页面的时候把真正的图片地址放在某属性中;

3.然后再滚动过程中判断元素是否进入当前浏览器窗口内;

4.***加载图片,当然加载什么,用什哪种用户体验都得由你决定;

难点:

浏览器兼容是造成难点的原因所在,DOM标准和IE标准,每天前端的工作都在和它们打交道。思考下面的几段代码

1.window.pageYOffset ? window.pageYOffset : window.document.documentElement.scrollTop

目的:获得当前页面相对于窗口显示区左上角的 Y 位置.

DOM标准:window.pageYOffset;

IE标准:window.document.documentElement.scrollTop

2.window.innerHeight ? window.innerHeight : document.documentElement.clientHeight

目的:声明了窗口的文档显示区的高度和宽度,以像素计.

DOM标准:innerheight 和 innerwidth;

IE标准:document.documentElement 或 ducument.body (与 DTD 相关)的 clientWidth 和 clientHeight 属性作为替代

3.obj.getBoundingClientRect().top + window.document.documentElement.scrollTop + window.document.body.scrollTop

目的:获取页面元素的位置.

当浏览器为 非webkit内核 时,document.body.scrollTop值恒定为0,使用 document.documentElement.scrollTop才能取到正确值 ;

当浏览器为 webkit内核 时,document.documentElement.scrollTop值恒定为0,使用 document.body;

我还搜索到一种说法是和DTD相关(即 当页面指定了 DOCTYPE时,使用 document.documentElement ; 当页面没有指定了 DOCTYPE时,使用 document.body),请确定知道的朋友帮忙指出下,不胜感谢。

细节:

1.因为真正的地址最初是在某属性中(默认是xclass="lazy" data-src,可自己设置),所以默认的图片地址***是一个像素的透明图片,这样可以避免在浏览器中出现红X;

JavaScript中怎么实现页面滚动图片加载功能

2.在图片load的时候可以加入等待的图片,这样用户才会知道这里有图片需要加载,良好的用户体验是前端一直所追求的(例子中有体现);

3.在图片load成功后可以加入合适的显示效果(例子中木有体现,可以自己尝试);

JavaScript源码如下:

var scrollLoad = (function (options) {          var defaults = (arguments.length == 0) ? { class="lazy" data-src: 'xclass="lazy" data-src', time: 300} : { class="lazy" data-src: options.class="lazy" data-src || 'xclass="lazy" data-src', time: options.time ||300};          var camelize = function (s) {              return s.replace(/-(\w)/g, function (strMatch, p1) {                  return p1.toUpperCase();              });          };          this.getStyle = function (element, property) {              if (arguments.length != 2) return false;              var value = element.style[camelize(property)];              if (!value) {                  if (document.defaultView && document.defaultView.getComputedStyle) {                      var css = document.defaultView.getComputedStyle(element, null);                      value = css ? css.getPropertyValue(property) : null;                  } else if (element.currentStyle) {                      value = element.currentStyle[camelize(property)];                  }              }              return value == 'auto' ? '' : value;          };          var _init = function () {              var offsetPage = window.pageYOffset ? window.pageYOffset : window.document.documentElement.scrollTop,                  offsetWindow = offsetPage + Number(window.innerHeight ? window.innerHeight : document.documentElement.clientHeight),                  docImg = document.images,                  _len = docImg.length;              if (!_len) return false;              for (var i = 0; i < _len; i++) {                  var attrclass="lazy" data-src = docImg[i].getAttribute(defaults.class="lazy" data-src),                      o = docImg[i], tag = o.nodeName.toLowerCase();                  if (o) {                      postPage = o.getBoundingClientRect().top + window.document.documentElement.scrollTop + window.document.body.scrollTop; postWindow = postPage + Number(this.getStyle(o, 'height').replace('px', ''));                      if ((postPage > offsetPage && postPage < offsetWindow) || (postWindow > offsetPage && postWindow < offsetWindow)) {                          if (tag === "img" && attrclass="lazy" data-src !== null) {                              o.setAttribute("class="lazy" data-src", attrclass="lazy" data-src);                          }                          o = null;                      }                  }              };              window.onscroll = function () {                  setTimeout(function () {                      _init();                  }, defaults.time);              }          };          return _init();      });      scrollLoad();

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注编程网行业资讯频道,感谢您对编程网的支持。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

JavaScript中怎么实现页面滚动图片加载功能

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

javascript如何实现图片预加载和懒加载功能

这篇文章主要介绍“javascript如何实现图片预加载和懒加载功能”,在日常操作中,相信很多人在javascript如何实现图片预加载和懒加载功能问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”javascr
2023-06-14

JavaScript怎么实现图片懒加载

本篇内容介绍了“JavaScript怎么实现图片懒加载”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!实现思路实现图片懒加载我们需要先明白具体
2023-07-02

小程序滚动加载更多功能怎么实现

本篇内容主要讲解“小程序滚动加载更多功能怎么实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“小程序滚动加载更多功能怎么实现”吧!1.需要用到的组件和apiscroll-view(可滚动视图区域
2023-06-26

如何在 JavaScript 中实现图片放大功能?(JavaScript怎么实现图片放大功能)

在JavaScript中实现图片放大功能是前端开发中常见的需求之一,它可以为用户提供更好的视觉体验,让图片在点击或悬停时以一种平滑且吸引人的方式放大。以下是实现这一功能的详细步骤:一、HTML结构首先,在HTML中创建
如何在 JavaScript 中实现图片放大功能?(JavaScript怎么实现图片放大功能)
JavaScript2024-12-22

怎么在HTML5中实现一个图片预加载功能

这篇文章给大家介绍怎么在HTML5中实现一个图片预加载功能,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。在HTML5中,我们可以使用drawImage方法在canvas上进行画图操作,其基本代码如下:var canva
2023-06-09

JavaScript怎么实现页面无缝滚动效果

这篇文章主要介绍“JavaScript怎么实现页面无缝滚动效果”,在日常操作中,相信很多人在JavaScript怎么实现页面无缝滚动效果问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”JavaScript怎么实
2023-06-29

怎么用JavaScript实现图片循环滚动效果

要实现图片循环滚动效果,可以通过JavaScript结合CSS实现。下面是一个简单的示例:HTML部分:
怎么用JavaScript实现图片循环滚动效果
2024-03-02

微信小程序怎么实现滚动加载更多功能

这篇文章主要为大家展示了微信小程序怎么实现滚动加载更多功能,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带大家一起来研究并学习一下“微信小程序怎么实现滚动加载更多功能”这篇文章吧。 1.需要用到的组件和apiscroll-v
2023-06-26

VB.NET中怎么实现拖动图片功能

VB.NET中怎么实现拖动图片功能,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1、 在Form中添加两个PictureBox控件。2、 在代码窗体中添加如下代码Priva
2023-06-17

webpack中css加载和图片加载功能怎么使用

这篇文章主要介绍“webpack中css加载和图片加载功能怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“webpack中css加载和图片加载功能怎么使用”文章能帮助大家解决问题。css加载器
2023-07-05

JavaScript图片打印功能怎么实现

这篇文章主要讲解了“JavaScript图片打印功能怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaScript图片打印功能怎么实现”吧!其实浏览器 window 对象提供了
2023-07-05

Vue图片监听鼠标滑轮滚动怎么实现图片缩小放大功能

这篇文章主要讲解了“Vue图片监听鼠标滑轮滚动怎么实现图片缩小放大功能”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Vue图片监听鼠标滑轮滚动怎么实现图片缩小放大功能”吧!效果:实现思路在j
2023-07-05

PHP+InfiniteScroll网页无限滚动加载数据怎么实现

这篇文章主要介绍“PHP+InfiniteScroll网页无限滚动加载数据怎么实现”,在日常操作中,相信很多人在PHP+InfiniteScroll网页无限滚动加载数据怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希
2023-06-04

编程热搜

目录