js实现首屏延迟加载实现方法 js实现多屏单张图片延迟加载效果

yizhihongxing
  1. 首屏延迟加载实现方法

首屏延迟加载可以提高网站的加载速度,让用户更快地看到页面的内容。实现方法如下:

步骤一:将首屏需要展示的图片的src属性设置为data-src

<img data-src="图片地址" alt="图片描述">

步骤二:通过JavaScript获取屏幕高度和滚动距离

var clientHeight = document.documentElement.clientHeight;
var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;

步骤三:判断图片是否在可视范围内,如果是则将data-src属性值替换为src属性值

var imgs = document.getElementsByTagName('img');
for (var i = 0; i < imgs.length; i++) {
  var img = imgs[i];
  if (img.getAttribute('data-src')) {
    var rect = img.getBoundingClientRect();
    if (rect.top <= clientHeight + scrollTop) {
      img.src = img.getAttribute('data-src');
      img.removeAttribute('data-src');
    }
  }
}
  1. 多屏单张图片延迟加载效果

多屏单张图片延迟加载可以减少网页的请求次数,从而提高网页的性能。实现方法如下:

步骤一:将需要延迟加载的图片的src属性设置为占位图片的地址

<img src="占位图片地址" data-src="真实图片地址" alt="图片描述">

步骤二:通过JavaScript获取屏幕高度和滚动距离

和首屏延迟加载相同。

步骤三:判断图片是否在可视范围内,如果是则将data-src属性值替换为src属性值

var imgs = document.getElementsByTagName('img');
for (var i = 0; i < imgs.length; i++) {
  var img = imgs[i];
  if (img.getAttribute('data-src')) {
    var rect = img.getBoundingClientRect();
    if (rect.top <= clientHeight + scrollTop) {
      img.src = img.getAttribute('data-src');
      img.removeAttribute('data-src');
    }
  }
}

示例说明:

HTML代码:

<div class="container">
  <img src="https://via.placeholder.com/350x150?text=placeholder" data-src="https://via.placeholder.com/350x150?text=real+pic" alt="pic">
  <img src="https://via.placeholder.com/350x150?text=placeholder" data-src="https://via.placeholder.com/350x150?text=real+pic" alt="pic">
  <img src="https://via.placeholder.com/350x150?text=placeholder" data-src="https://via.placeholder.com/350x150?text=real+pic" alt="pic">
  <img src="https://via.placeholder.com/350x150?text=placeholder" data-src="https://via.placeholder.com/350x150?text=real+pic" alt="pic">
  <img src="https://via.placeholder.com/350x150?text=placeholder" data-src="https://via.placeholder.com/350x150?text=real+pic" alt="pic">
</div>

CSS代码:

.container {
  margin: 50px auto;
  max-width: 400px;
}

img {
  display: block;
  margin-bottom: 20px;
  width: 100%;
  height: auto;
  background-color: #eee;
}

JavaScript代码:

var clientHeight = document.documentElement.clientHeight;
var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;

var imgs = document.getElementsByTagName('img');
for (var i = 0; i < imgs.length; i++) {
  var img = imgs[i];
  if (img.getAttribute('data-src')) {
    var rect = img.getBoundingClientRect();
    if (rect.top <= clientHeight + scrollTop) {
      img.src = img.getAttribute('data-src');
      img.removeAttribute('data-src');
    }
  }
}

window.addEventListener('scroll', function() {
  var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
  for (var i = 0; i < imgs.length; i++) {
    var img = imgs[i];
    if (img.getAttribute('data-src')) {
      var rect = img.getBoundingClientRect();
      if (rect.top <= clientHeight + scrollTop) {
        img.src = img.getAttribute('data-src');
        img.removeAttribute('data-src');
      }
    }
  }
});

在示例中,首先将所有需要延迟加载的图片的src属性设置为占位图片的地址,然后在JavaScript中监听滚动事件,当图片进入可视范围内时将data-src属性值替换为src属性值。整个过程实现了多屏单张图片的延迟加载效果。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js实现首屏延迟加载实现方法 js实现多屏单张图片延迟加载效果 - Python技术站

(0)
上一篇 2023年6月25日
下一篇 2023年6月25日

相关文章

  • Win10提示文件名对目标文件夹可能太长怎么解决?

    当你在Windows 10中尝试复制或移动文件时,有时会遇到提示“文件名对目标文件夹可能太长”的错误。这是因为Windows 10对于文件名和文件路径长度的限制较低,而某些应用程序可能会使用较长的文件名和路径,导致该错误的发生。下面是解决此问题的完整攻略,包括两个示例说明: 方法一:缩短文件名和文件路径 这是最简单的解决方法。您可以缩短文件名和文件路径,以使…

    other 2023年6月26日
    00
  • python中10的n次方如何表示

    python中10的n次方如何表示 在Python中,可以使用 ** 运算符计算幂运算,10的n次方可以很简单地表示为 10**n。下面是一些常见的用法: 基本用法 # 计算10的2次方 result = 10**2 print(result) # 输出 100 # 计算10的3次方 result = 10**3 print(result) # 输出 100…

    其他 2023年3月29日
    00
  • 太吾绘卷正式版启动出错怎么办 正式版启动出错问题解决方法

    太吾绘卷是一款备受玩家喜爱的角色扮演游戏,在正式版启动时出现错误可能是由于多种原因引起的。本攻略提供几种常见的原因和解决方法来帮助玩家解决启动问题。 1. 造成问题的原因 太吾绘卷正式版启动出错可能由以下原因引起: 电脑配置问题:太吾绘卷对电脑的配置要求较高,如果电脑不满足游戏的最低配置要求可能会导致游戏启动失败。 驱动程序问题:如果您的电脑驱动程序过期或不…

    other 2023年6月27日
    00
  • 百度网盘文件名换行怎么办? 百度网盘文取消换行显示文件名的技巧

    下面开始详细讲解“百度网盘文件名换行怎么办? 百度网盘文取消换行显示文件名的技巧”的完整攻略。 问题现象 很多时候我们会在百度网盘上上传一些文件,但是上传完之后发现文件名过长,导致文件名换行显示,严重影响了观感和使用体验。 解决方法 其实,我们可以通过一些简单的操作,取消文件名的换行显示,使得文件名不再挤在一坨,变得更加整洁美观。 方法一:使用全角字符代替空…

    other 2023年6月26日
    00
  • Cucumber常用关键字

    Cucumber是一种行为驱动开发(BDD)工具,它使用自然语言来描述软件的行为。在Cucumber中,关键字是用于描述测试场景和步骤的特殊单词。本文将详细讲解Cucumber常用关键字,包括Given、When、Then、And和But。同时,本文还提供了两个示例说明。 Given Given关键字用于描述测试场景的前置条件。它通常用于设置测试环境和准备测…

    other 2023年5月5日
    00
  • 荣耀note10开发者选项在哪?荣耀note10开发者选项开启教程

    以下是详细讲解“荣耀Note10开发者选项在哪?荣耀Note10开发者选项开启教程”的完整攻略。 1. 荣耀Note10开发者选项在哪? 荣耀Note10开发者选项是一个隐藏的设置选项,需要手动开启才能使用。具体步骤如下。 打开设置菜单,向下滑动找到“关于手机”选项,点击进入。 在“关于手机”页面向下滑动,找到“版本号”项,连续点击7次版本号。 点击7次后会…

    other 2023年6月26日
    00
  • C语言数组a和&a的区别讲解

    C语言数组a和&a的区别讲解 在C语言中,数组是一种非常常见且重要的数据类型。而在程序中,我们有时候会涉及到数组和数组地址的问题。本攻略将详细讲解数组a和&a的区别。 数组a的定义及用法 在C语言中,数组是一种由相同数据类型的元素所组成的集合。数组a的定义形式通常为: 类型说明符 数组名[元素个数]; 其中,类型说明符用来说明数组元素的数据类…

    other 2023年6月25日
    00
  • jq实现数字增加或者减少的动画

    jq实现数字增加或者减少的动画 在前端开发中,经常需要实现数字的动画效果,例如,实现购物车中商品数量的增加或减少动画效果,本文将介绍如何使用jQuery实现这种数字动画效果。 小数点增加动画效果实现 首先,我们来实现小数点增加的动画效果。下面是一个DIV元素,其中显示一个初始值为12.34的数字: <div id="num">…

    其他 2023年3月28日
    00
合作推广
合作推广
分享本页
返回顶部