JS中图片缓冲loading技术的实例代码

下面我将详细讲解JS中图片缓冲loading技术的实例代码攻略。

1. 图片缓冲loading技术的作用

图片缓冲loading技术可以解决图片加载过慢或者图片尚未加载完成时页面出现的空白或错乱现象,使得页面更加优雅和美观。

2. 实现步骤

2.1 定义图片缓存对象

首先,我们需要定义一个空对象,用于保存本页面中所需加载的所有图片资源。

let imgObj = {};

2.2 预加载图片

接下来,我们需要编写一个方法,用于预加载图片。该方法主要实现两个功能:

  1. 预加载图片,将图片对象保存到imgObj对象中。
  2. 根据加载状态,动态显示加载进度。

以下代码演示了预加载图片的实现方式:

function preloadImage(arr) {
  let progress = 0;
  let len = arr.length;

  for(let i = 0; i < len; i++) {
    let img = new Image();
    img.onload = img.onerror = function() {
      progress++;
      let percent = Math.floor(progress / len * 100);
      console.log(`${percent}%`);
    };
    img.src = arr[i];
    imgObj[arr[i]] = img;
  }
}
  • arr为一个存储图片路径的数组。
  • let progress = 0;声明一个计数器progress用于记录已加载完成的图片数量。
  • let len = arr.length; 记录图片数组的长度。
  • let img = new Image(); 声明一个新的图片对象。
  • img.onload = img.onerror = function() {}图片加载完成或者出错时的回调函数。
  • progress++图片加载完成或者出错时,计数器加1,记录完成的情况
  • let percent = Math.floor(progress / len * 100); 计算加载进度百分比,向下取整。
  • console.log(${percent}%);将加载进度百分比打印出来,你可以根据实际情况,改为展示进度条等效果等等。
  • img.src = arr[i]; 图片对象的地址属性赋值为图片路径。
  • imgObj[arr[i]] = img; 将图片对象保存到imgObj对象中,以路径名作为imgObj对象的属性名。

2.3 使用预加载的图片

全部图片预加载完成后,我们就可以通过imgObj对象来获取预加载的图片,然后使用这些图片了。以下代码演示了如何使用imgObj中的图片对象:

let img = imgObj['./images/logo.png']; //根据图片路径获取img对象
document.body.appendChild(img); //将img对象添加到body中

以上代码中,我们将预加载的logo图片动态添加到了body中。

3. 示例说明

3.1 图片预加载效果实现

以下是一个使用图片预加载技术实现的图片轮播效果示例。代码实现步骤和上文类似,只不过是将预加载的图片插入到网页中的轮播图中。

<button id="pre_load_btn">图片预加载</button>
<div id="imgs_wrap"></div>
let imgObj = {};

function preloadImage(arr) {
  let progress = 0;
  let len = arr.length;

  for(let i = 0; i < len; i++) {
    let img = new Image();
    img.onload = img.onerror = function() {
      progress++;
      let percent = Math.floor(progress / len * 100);
      console.log(`${percent}%`);
      if(progress === len) {
        showImgs(arr);
      }
    };
    img.src = arr[i];
    imgObj[arr[i]] = img;
  }
}

function showImgs(arr) {
  let imgsWrap = document.getElementById('imgs_wrap');
  for(let i = 0; i < arr.length; i++) {
    let img = imgObj[arr[i]];
    imgsWrap.appendChild(img);
  }
}

let imgArr = [
  './images/01.jpg',
  './images/02.jpg',
  './images/03.jpg',
  './images/04.jpg',
];

let preLoadBtn = document.getElementById('pre_load_btn');
preLoadBtn.onclick = function() {
  preloadImage(imgArr);
};

3.2 图片预加载进度展示效果实现

以下是一个图片预加载进度展示的示例。点击按钮后,将会开始图片预加载,并在页面上展示图片预加载的进度,注意,你需要将以下HTML和js代码复制到你的HTML文件中试验:

<button id="pre_load_btn">图片预加载</button>
<div id="progress_wrap"></div>
let imgObj = {};

function preloadImage(arr) {
  let progress = 0;
  let len = arr.length;

  let progressWrap = document.getElementById('progress_wrap');
  progressWrap.innerHTML = '0%';

  for(let i = 0; i < len; i++) {
    let img = new Image();
    img.onload = img.onerror = function() {
      progress++;
      let percent = Math.floor(progress / len * 100);
      progressWrap.innerHTML = `${percent}%`;
      console.log(`${percent}%`);
      if(progress === len) {
        console.log('图片加载完毕!');
      }
    };
    img.src = arr[i];
    imgObj[arr[i]] = img;
  }
}

let imgArr = [
  './images/01.jpg',
  './images/02.jpg',
  './images/03.jpg',
  './images/04.jpg',
];

let preLoadBtn = document.getElementById('pre_load_btn');
preLoadBtn.onclick = function() {
  preloadImage(imgArr);
};

以上代码中,我们根据向页面插入的div元素节点,动态显示图片预加载的进度,你也可以根据需求自定义样式展示进度条等效果。

4. 总结

以上就是JS中图片缓冲loading技术的实例代码攻略。使用预加载技术可以提高网页的响应速度,对于图片资源较多的网站,使用这种方法可以减少用户的等待时间,提高体验。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS中图片缓冲loading技术的实例代码 - Python技术站

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

相关文章

  • layer弹出框确定前验证:弹出消息框的方法(弹出两个layer)

    “layer弹出框确定前验证:弹出消息框的方法(弹出两个layer)”主要是在弹出框中进行数据验证,如果数据不合法,则需要弹出提示框提醒用户,让用户重新输入正确的数据。 以下是这个攻略的完整步骤: Step 1:创建一个弹出框 首先需要引入Layer插件,并创建一个弹出框。具体代码如下: // 引入Layer <script src="htt…

    JavaScript 2023年6月10日
    00
  • vscode中vue-cli项目es-lint的配置方法

    下面是详细讲解“vscode中vue-cli项目es-lint的配置方法”的完整攻略: 1. 安装ESLint 首先请确保你的vscode里已经安装了 ESLint 插件,如果没有安装可以在插件市场中搜索并进行安装。ESLint 是 Javascript 的语法规范,可以用于代码的静态检查,还可以进行代码风格的约束。ESLint还支持vue、react等框架…

    JavaScript 2023年6月11日
    00
  • JavaScript生成.xls文件的代码

    生成Excel文件是前端开发中常见的需求之一,可以通过JS库来实现。目前比较流行的库有两个:SheetJS和Handsontable,本文将以SheetJS为例来讲解如何使用JS生成Excel文件的完整攻略。 SheetJS库介绍 SheetJS是一组用于处理Excel文件的JS库,可读取、修改和写入Excel文件,支持XLS、XLSX等多种格式。同时She…

    JavaScript 2023年5月19日
    00
  • javascript 文字上下间隔滚动的代码 符合WEB标准 脚本之家修正版

    下面就来详细讲解“JavaScript文字上下间隔滚动的代码符合WEB标准脚本之家修正版”的完整攻略: 一、问题描述 有时候我们需要在网页中展示一些文字,但是为了让网页不显得太过单调,我们希望这些文字能够以一种滚动的形式进行展示,类似于一些新闻和通知栏目的效果。那么如何实现这样的滚动效果呢?下面就来介绍一种符合WEB标准的JavaScript文字上下间隔滚动…

    JavaScript 2023年6月11日
    00
  • 我做了一个 VSCode 插件版的 ChatGPT

    大家好,我是风筝 其实很早之前就想学学 VSCode 插件开发了,但是又不知道做什么,加上我这半吊子前端水平,迟迟没有动手。 最近 ChatGPT 火的一塌糊涂,我也一直在用,真的非常好用,有些问题之前需要 Google 搜索,现在用 ChatGPT 基本上都能直接解决,效率提升了不少。 但是吧,浏览器和 IDE 来回切换又很麻烦,所以我灵机一动,那就开发个…

    JavaScript 2023年5月11日
    00
  • JS删除数组中某个元素的四种方式总结

    JS删除数组中某个元素的四种方式总结 JavaScript中有多种方式可以删除数组中某个元素,本文将总结其中常用的四种方式并且进行详细介绍。 方法一:splice() splice()方法可以在数组中添加、删除或替换元素。可以通过指定两个参数来删除一个或多个元素。第一个参数指定从哪个索引开始进行删除,第二个参数指定要删除的元素个数。以下是该方法的语法: ar…

    JavaScript 2023年6月10日
    00
  • js apply/call/caller/callee/bind使用方法与区别分析

    JS中的apply、call、caller、callee以及bind是函数对象的5个方法,它们可以帮助我们更加灵活地调用函数、改变函数的this指向以及传递参数。本文将详细讲解它们的使用方法和区别分析。 apply和call方法 apply和call方法用于调用一个函数,并且可以指定函数的this指向,同时还可以将参数以数组或者类数组的形式传递给函数。 ap…

    JavaScript 2023年6月10日
    00
  • js 工具类

    /*是否带有小数*/ function isDecimal(strValue ) { var objRegExp= /^\d+\.\d+$/; return objRegExp.test(strValue); } /*校验是否中文名称组成 */ function ischina(str) { var reg=/^[\u4E00-\u9FA5]{2,4}$/;…

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