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

  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日

相关文章

  • 40.oracle事务

    40.Oracle事务 Oracle数据库是业界最流行的一种关系型数据库管理系统。它能够支持大规模的、高性能的数据库应用。在Oracle数据库中,事务是数据库的基本操作单元之一。事务是一组SQL语句的集合,这些语句要么全部执行成功,要么全部执行失败。一个事务可以包含增、删、改等多个操作,执行完全部操作后,将这些操作提交,这些操作将会被永久存储到数据库中。 O…

    其他 2023年3月28日
    00
  • recyclerview分割线——万能分割线

    Recyclerview分割线——万能分割线 当我们使用Recyclerview来展示列表的时候,通常需要使用分割线来给列表项之间增加一些空隙,使得用户可以更好地区分每个项。那么在这里,我们介绍一种万能分割线,使你在使用Recyclerview时减少一些烦恼。 传统方式 在传统的方式中,我们通常需要自己写分割线的布局文件。但是,这种方式会增加代码量,并且会有…

    其他 2023年3月28日
    00
  • python 拷贝特定后缀名文件,并保留原始目录结构的实例

    Python拷贝特定后缀名文件,并保留原始目录结构的实例攻略 在Python中,你可以使用shutil模块来拷贝文件,并使用os模块来处理目录结构。下面是一个完整的攻略,详细讲解了如何拷贝特定后缀名的文件,并保留原始目录结构。 步骤1:导入必要的模块 首先,你需要导入shutil和os模块,以便使用它们的函数和方法。 import shutil import…

    other 2023年8月5日
    00
  • Python一个简单的通信程序(客户端 服务器)

    Python一个简单的通信程序(客户端 服务器)攻略 概述 本文主要介绍如何使用Python语言编写一个简单的通信程序,包括客户端和服务器端。通过使用Python内置的socket库,可以很方便地实现网络通信功能。 步骤 客户端 导入socket库,并创建一个socket对象。 “`python import socket client_socket = …

    other 2023年6月25日
    00
  • Windows 7和XP关机后变自动重启的解决办法

    标题:Windows 7和XP关机后变自动重启的解决办法 在 Windows 7 和 XP 的一些情况下,电脑可能会在关机后自动重启,给用户带来不便。本篇文章将介绍两种解决方法,帮助用户解决这个问题。 方法一:修改电源选项 在 Windows 7 和 XP 中,电源选项中可能存在“自动重启”选项,需要将其关闭才能避免自动重启。具体操作步骤如下: 在桌面上右键…

    other 2023年6月26日
    00
  • 苹果iOS10.3.3正式版固件更新发布 iOS10.3.3正式版固件下载地址大全

    苹果iOS10.3.3正式版固件更新发布攻略 1. 简介 苹果公司发布了iOS10.3.3正式版固件更新,该更新修复了一些安全漏洞和稳定性问题。本攻略将详细介绍如何更新iOS10.3.3固件,并提供下载地址。 2. 更新步骤 请按照以下步骤更新您的设备到iOS10.3.3正式版固件: 备份数据:在进行任何系统更新之前,建议您先备份设备中的重要数据。您可以使用…

    other 2023年8月4日
    00
  • 深入理解C语言中编译相关的常见错误

    深入理解C语言中编译相关的常见错误攻略 前言 编译是程序员生活中必备的技能之一,也往往是导致错误的地方之一。对编译过程有深入的理解,不仅可以帮助程序员更好地排查错误,还能提高编码能力。本文将从常见的编译错误着手,结合实例,探讨编译错误的原因和解决方法。 未声明函数 错误信息:undefined reference to ‘function_name’ 这种错…

    other 2023年6月26日
    00
  • Android实现系统重新启动的功能

    Android实现系统重新启动的功能攻略 在 Android 应用中实现系统重新启动的功能,主要可以通过两种方式实现: 通过发送 ACTION_REBOOT 广播实现系统重新启动。 通过 su 的命令执行 /system/bin/reboot 实现系统重新启动。 以下是具体操作步骤和示例说明。 1. 通过发送 ACTION_REBOOT 广播实现系统重新启动…

    other 2023年6月27日
    00
合作推广
合作推广
分享本页
返回顶部