首页 web前端 js教程 基于JS实现图片懒加载(lazyload)的实例教程

基于JS实现图片懒加载(lazyload)的实例教程

Jun 15, 2017 pm 01:25 PM
懒加载

图片懒加载也是比较常见的一种性能优化的方法,本篇文章主要介绍了原生JS实现图片懒加载(lazyload)实例,这里整理了详细的代码,有需要的小伙伴可以参考下

前言

图片懒加载也是比较常见的一种性能优化的方法,最近在用vue做一个新闻列表的客户端时也用到了,这里就简单介绍下实现原理和部分代码。

实现原理

加载页面的时候,图片一直都是流量大头,针对图片的性能方法也挺多的比如base64、雪碧图等;懒加载也是其中一种,主要原理是将非首屏的图片src设为一个默认值,然后监听窗口滚动,当图片出现在视窗中时再给他赋予真实的图片地址,这样可以保证首屏的加载速度然后按需加载图片。


具体代码

首先在渲染时,图片引用默认图片,然后把真实地址放在data-*属性上面。


<image src=&#39;./../assets/default.png&#39; :src=&#39;item.allPics&#39; class=&#39;lazyloadimg&#39;>
登录后复制

然后是监听滚动,直接用window.onscroll就可以了,但是要注意一点的是类似于window的scroll和resize,还有mousemove这类触发很频繁的事件,最好用节流(throttle)或防抖函数(debounce)来控制一下触发频率。underscore和lodash里面都有封装这两个方法,这里先不多做介绍了。

接着要判断图片是否出现在了视窗里面,主要是三个高度:1,当前body从顶部滚动了多少距离。2,视窗的高度。3,当前图片距离顶部的距离。具体代码如下:


window.onscroll =_.throttle(this.watchscroll, 200);
watchscroll () {
  var bodyScrollHeight = document.body.scrollTop;// body滚动高度
  var windowHeight = window.innerHeight;// 视窗高度
  var imgs = document.getElementsByClassName(&#39;lazyloadimg&#39;);
  for (var i =0; i < imgs.length; i++) {
  var imgHeight = imgs[i].offsetTop;// 图片距离顶部高度
  if (imgHeight < windowHeight + bodyScrollHeight) {
   imgs[i].src = imgs[i].getAttribute(&#39;src&#39;);
   img[i].className = img[i].className.replace(&#39;lazyloadimg&#39;,&#39;&#39;)
  }
  }
 }
登录后复制

结语

大概内容就这么多了,下次可能会补充一下防抖节流源码的实现。最后再补充两个常见的滚动判断:

1.页面滚动离开首屏(这时可显示回到顶部的按钮):document.body.scrollTop > window.innerHeight

2.页面滚动到底部了(这时可去调接口获取更多内容):window.scrollY + window.innerHeight > document.body.offsetHeight

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

以上是基于JS实现图片懒加载(lazyload)的实例教程的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

Vue3中的lazy函数详解:懒加载组件提高应用性能 Vue3中的lazy函数详解:懒加载组件提高应用性能 Jun 19, 2023 am 08:39 AM

Vue3是一款流行的JavaScript框架,它具有易学易用、高效稳定的特点,尤其擅长构建单页应用程序(SPA)。Vue3中的lazy函数,作为懒加载组件的利器之一,可以很大程度上提高应用程序的性能。本文将详解Vue3中的lazy函数的使用方法与原理,以及它在实际开发中的应用场景和优点。什么是懒加载?在传统的前后端分离的开发中,前端开发人员往往需要处理大量的

Vue如何实现组件的懒加载和预加载? Vue如何实现组件的懒加载和预加载? Jun 27, 2023 pm 03:24 PM

随着Web应用程序的日益复杂,前端开发人员需要在保证页面加载速度的前提下更好地提供功能和用户体验。这就涉及到Vue组件的懒加载和预加载,它们是优化Vue应用程序性能的重要手段。本文将深入介绍Vue组件的懒加载和预加载的实现方法。一、什么是懒加载懒加载就是当用户需要访问某个组件时才会把该组件的代码加载进来,而不是一开始就把所有组件的代码都加载进来,这样可以减少

Vue懒加载图片失败问题解决方案 Vue懒加载图片失败问题解决方案 Jun 29, 2023 pm 10:42 PM

Vue开发中如何解决图片懒加载失败的问题懒加载(LazyLoad)是现代Web开发中常用的优化技术之一,特别在加载大量图片和资源时,可以有效减轻页面的负担,提升用户体验。然而,在使用Vue框架进行开发时,有时候我们可能会遇到图片懒加载失败的问题。本文将介绍一些常见的问题和解决方案,以便开发者能够更好地应对这个问题。图片资源路径错误首先,我们需要确保图片资源

PHP数组分页中如何实现懒加载? PHP数组分页中如何实现懒加载? May 03, 2024 am 08:51 AM

PHP数组分页时实现懒加载的方法是:使用迭代器只加载数据集的一个元素。创建一个ArrayPaginator对象,指定数组和页面大小。在foreach循环中迭代对象,每次加载和处理下一页数据。优点:分页性能提升、内存消耗减少、按需加载支持。

懒加载的方式有哪些 懒加载的方式有哪些 Nov 13, 2023 pm 03:14 PM

懒加载的方式有图片懒加载、视频懒加载、脚本文件懒加载和数据懒加载等。详细介绍:1、图片懒加载,是一种常见的懒加载实现方式,在页面加载时,只加载可视区域的图片,其他区域的图片则以占位符的形式呈现,当用户滚动页面到图片位置时,才加载真正的图片,图片懒加载可以通过使用现有的JavaScript库或自定义代码实现;2、视频懒加载的实现方式与图片懒加载类似,在页面加载时等等。

懒加载延迟加载什么意思 懒加载延迟加载什么意思 Nov 20, 2023 pm 02:12 PM

懒加载是一种程序设计模式,指的是在需要时才加载数据,而不是在对象初始化或加载时就立即获取数据的策略,懒加载的目的是为了延迟数据的加载,以节省系统资源和提高性能。

使用C# Lazy 实现延迟加载的方法 使用C# Lazy 实现延迟加载的方法 Feb 19, 2024 am 09:42 AM

C#如何使用Lazy实现懒加载,需要具体代码示例在软件开发中,懒加载(Lazyloading)是一种延迟加载的技术,它可以帮助我们提高程序的性能和资源利用效率。在C#中,我们可以使用Lazy类来实现懒加载的功能。本文将介绍Lazy类的基本概念以及如何使用它来实现懒加载,同时会提供具体的代码示例。首先,我们需要了解Lazy

Vue技术开发中如何处理图片资源的懒加载和预加载 Vue技术开发中如何处理图片资源的懒加载和预加载 Oct 09, 2023 am 09:45 AM

Vue技术开发中如何处理图片资源的懒加载和预加载随着网页内容的丰富化,图片已经成为网页中必不可少的一部分。然而,大量的图片资源加载可能会导致网页加载速度变慢,影响用户的体验。为了解决这个问题,我们可以使用图片资源的懒加载和预加载技术来优化用户体验。一、懒加载技术懒加载是指网页中的图片在初次加载时只加载可视区域内的图片,当用户滚动页面到达图片所在区域时再加载图

See all articles