js图片加载效果实例代码(延迟加载+瀑布流加载)

yizhihongxing

JS图片加载效果是前端开发中非常重要的一环,以提升用户体验为目标,延迟加载和瀑布流加载成为了当前常见的两种图片加载效果。

什么是延迟加载

延迟加载,也叫懒加载,在一个页面中存在很多图片时,没有必要一次性加载所有图片,而是可以只加载第一屏或者可见区域内的图片,当用户向下滚动页面,再异步地去加载剩下的图片。这样可以有效减少页面的加载时间。

实现延迟加载的代码示例

假如以下代码是需要延迟加载的图片:

<img data-url="http://example.com/image.jpg" alt="示例图片">

我们可以使用以下JS代码实现图片的延迟加载:

document.addEventListener("DOMContentLoaded", function() {
  const images = document.querySelectorAll("img[data-url]");
  const options = {
    rootMargin: "0px",
    threshold: 0
  };

  const loadImage = function(image) {
    image.setAttribute("src", image.getAttribute("data-url"));
    image.onload = function() {
      image.removeAttribute("data-url");
    };
  };

  const observer = new IntersectionObserver(function(entries, observer) {
    entries.forEach(function(entry) {
      if (entry.isIntersecting) {
        loadImage(entry.target);
        observer.unobserve(entry.target);
      }
    });
  }, options);

  images.forEach(function(image) {
    observer.observe(image);
  });
});

代码解释:

  1. 首先通过querySelectorAll选择所有需要延迟加载的图片,即使用data-url属性作为标志。
  2. 使用IntersectionObserverAPI,监听所有对象的交叉事件。当符合条件时,执行加载图片的方法。
  3. 当选定的图片进入“交叉状态”,即进入可视区域,就会调用该方法。

什么是瀑布流加载

瀑布流加载,也叫瀑布流布局,是指以瀑布流的形式摆放图片。即每列等宽不等高,图片按顺序排列,形成瀑布流。当达到页面底部时,再去获取更多的图片数据,动态增加页面内容。瀑布流加载是一种多列等宽布局形式,更适合于展示图片墙或产品展示。

实现瀑布流加载的代码示例

以下是一个简单的瀑布流加载实现示例:

<div id="waterfall">
  <img src="http://example.com/image1.jpg">
  <img src="http://example.com/image2.jpg">
  <img src="http://example.com/image3.jpg">
  ...
</div>
function createImage(url) {
  const img = document.createElement("img");
  img.src = url;
  document.getElementById("waterfall").appendChild(img);
}

function fetchImages(page) {
  const xhr = new XMLHttpRequest();
  xhr.onreadystatechange = function() {
    if (xhr.readyState === 4 && xhr.status === 200) {
      const images = JSON.parse(xhr.responseText).data;
      images.forEach(function(image) {
        createImage(image.url);
      });
    }
  };
  xhr.open("GET", "/api/images?page=" + page);
  xhr.send();
}

let page = 1;
fetchImages(page);

window.addEventListener("scroll", function() {
  if (window.innerHeight + window.scrollY >= document.body.offsetHeight) {
    page++;
    fetchImages(page);
  }
});

以上代码实现了以下功能:

  1. 初始时加载第一页的图片。
  2. 当页面滚动到底部时,获取更多数据,并展示新的图片。

以上是实现瀑布流加载的一个示例,当然,具体实现还需要根据具体情况来定制代码,包括数据加载的方式、图片容器的样式、容器的大小等等。

总之,延迟加载和瀑布流加载都是为了在大规模图片显示效果下,提高用户体验的方法。开发者可根据具体需求和场景来选择使用。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js图片加载效果实例代码(延迟加载+瀑布流加载) - Python技术站

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

相关文章

  • 关于JavaScript中URL对象的一些妙用

    关于JavaScript中URL对象的一些妙用,我来为大家详细讲解一下。 什么是URL对象 URL对象是JavaScript中的一个内置对象,它表示一个统一资源定位符,即URL。它可以帮助我们解析并操作URL。 在JavaScript中,我们可以通过创建一个URL实例来创建一个URL对象。其语法如下: let urlObject = new URL(urlS…

    JavaScript 2023年6月11日
    00
  • JS控件bootstrap suggest plugin使用方法详解

    JS控件bootstrap suggest plugin使用方法详解 简介 Bootstrap Suggest Plugin是一个基于Bootstrap框架开发的下拉菜单插件,它通过jQuery来实现自动补全和建议功能,可以非常方便地为文本框、选择器添加下拉菜单。 安装 首先,你需要引入 Bootstrap Suggest插件的js文件,并且在页面中放置文本…

    JavaScript 2023年6月11日
    00
  • 聊一聊JavaScript作用域和作用域链

    下面是详细讲解“聊一聊JavaScript作用域和作用域链”的完整攻略。 JavaScript中的作用域 JavaScript中的作用域是指变量的适用范围,也就是变量能够被访问的区域。在JavaScript中,变量的作用域有全局作用域和局部作用域两种。 全局作用域 全局作用域是指在所有函数外部定义的变量,它的作用域范围是整个JavaScript程序。在全局作…

    JavaScript 2023年5月28日
    00
  • JavaScript倒计时定时器和间隔定时器使用详解

    下面我就为你详细讲解“JavaScript倒计时定时器和间隔定时器使用详解”的完整攻略。 倒计时定时器 倒计时定时器指的是在一个固定的时间内进行倒计时,可以通过 setInterval() 函数实现。 代码示例 下面的代码演示了如何使用 setInterval() 函数实现一个倒计时: // 定义倒计时剩余时间为 60 秒 var timeLeft = 60…

    JavaScript 2023年6月11日
    00
  • JS实现快速比较两个字符串中包含有相同数字的方法

    要实现快速比较两个字符串中包含有相同数字的方法,可以使用 JavaScript 中的正则表达式进行匹配。具体实现可以分为以下步骤: 1. 获取字符串中的数字 使用正则表达式将字符串中的数字提取出来。 const str = "abc1def2ghi3jkl"; const pattern = /\d+/g; const numArray …

    JavaScript 2023年5月28日
    00
  • 用JS在浏览器中创建下载文件

    要在浏览器中创建并下载文件,可以通过以下步骤: 创建Blob对象 在JavaScript中,Blob对象代表了一个不可变的、原始数据的类文件对象,可以用它创建一个新文件。 例如,以下代码将创建一个新的Blob对象: const data = "Hello, World!" const blob = new Blob([data], { t…

    JavaScript 2023年5月27日
    00
  • js中的鼠标事件有哪些(用法示例学习进阶)

    JS中的鼠标事件是指在浏览器中用户和鼠标交互时,所触发的事件。在前端开发中,这些鼠标事件被广泛应用于各种网站和应用程序中。下面将介绍一些常用的鼠标事件以及它们的用法示例。 鼠标单击事件(click) 鼠标单击事件(click)是指在鼠标左键单击时所触发的事件。在页面中使用最为广泛的是按钮的单击事件。下面是一个示例,当按钮被单击时,将弹出一个提示框。 <…

    JavaScript 2023年6月11日
    00
  • JavaScript检查子字符串是否在字符串中的方法

    当需要判断一个字符串是否包含某个子字符串时,我们可以使用JavaScript中提供的字符串方法来实现。以下是常用的三种方法: 方法一:indexOf() indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。如果要检查的子字符串在主字符串中不存在,那么该方法会返回 -1。 例如:我们要检查字符串 “hello world” 是否包含 “w…

    JavaScript 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部