懒加载实践记录

1.原理

 懒加载的原理是通过监听用户的浏览行为,当用户滚动到可视区域内时,再进行资源的加载。这样可以避免一次性加载过多的资源,从而减少页面的加载时间和带宽消耗。

2.主要使用场景

 懒加载适用于图片较多,页面列表较长(长列表)的场景中。

3.懒加载的优点

  • 减少首页加载时间:初始页面只加载必要的内容,而不需要等待所有资源都加载完成。
  • 提高用户体验:页面加载更快,用户可以更快地交互和浏览内容。
  • 节约带宽消耗:只加载用户需要的内容,减少不必要的带宽消耗。

4.注意

图片懒加载的核心点包括以下几个方面:

  1. 监听滚动事件:通过监听用户的滚动事件,判断页面上的图片是否进入了可视区域。一旦图片进入可视区域,就触发加载操作。

  2. 设置占位符:在页面加载时,可以先为图片设置一个占位符,通常是一个占位图或者是图片的尺寸占位。这样可以保持页面的布局稳定,避免因图片加载导致页面抖动。

  3. 动态加载图片:当图片进入可视区域时,通过 JavaScript 动态创建 img 元素,并将图片的真实地址赋值给该元素的 src 属性。这会触发浏览器加载图片资源。

  4. 懒加载优化:为了更好地优化懒加载效果,可以考虑延迟加载图片的时间,即不是在图片完全进入可视区域时立即加载,而是延迟一小段时间,以避免过于频繁地触发加载操作。

  5. 处理异常和兼容性:在实现图片懒加载时需要注意处理异常情况,比如图片加载失败、图片资源无法访问等情况。此外,考虑到不同浏览器和设备的兼容性,可使用现有的第三方库或框架,以便更方便地实现图片懒加载功能。

另外需注意:懒加载并非适用于所有场景。对于一些重要的资源(如主要内容、重要的功能组件等),应当优先加载,以确保用户能够尽快访问到核心内容。而对于一些非必要资源(如底部的图片、辅助功能组件等),可以采用懒加载的方式。 

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Lazy Load Images Example</title><style>.image-container {width: 300px;height: 300px;margin: 20px;border: 1px solid #ccc;}.image {width: 100%;height: 100%;object-fit: cover;}.kong-place{height: 1000px;}</style>
</head>
<body><div class="kong-place"></div><div class="image-container"><img data-src="./images/1683166212929-6cc8b8b6-2c4a-4927-8226-65d1f1f4f337.gif"             class="image" alt="Image 1"></div><div class="image-container"><img data-src="./images/logo.png" class="image" alt="Image 2"></div><div class="image-container"><img data-src="./images/count.png" class="image" alt="Image 3"></div><script>// 当文档加载完成后执行的函数document.addEventListener("DOMContentLoaded", function() {// 查找所有带有 data-src 属性的图片元素var lazyImages = document.querySelectorAll('img[data-src]');// 创建一个 IntersectionObserver 实例来观察元素的可见性var observer = new IntersectionObserver(function(entries, observer) {// 对于每个可见性变化的条目执行回调函数entries.forEach(function(entry) {// 如果条目可见if (entry.isIntersecting) {// 获取当前懒加载的图片元素var lazyImage = entry.target;// 将 data-src 属性的值赋给 src 属性,触发图片加载lazyImage.src = lazyImage.dataset.src;// 加载完成后移除 data-src 属性,避免重复加载lazyImage.removeAttribute('data-src');// 停止观察当前图片元素,避免重复处理observer.unobserve(lazyImage);}});});// 遍历所有图片元素,开始观察可见性变化lazyImages.forEach(function(lazyImage) {observer.observe(lazyImage);});
});</script>
</body>
</html>

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/691976.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux——常用特殊符号介绍

1、# 井号 (comments) 这几乎是个满场都有的符号&#xff0c;除了先前已经提过的"第一行" #!/bin/bash 井号也常出现在一行的开头&#xff0c;或者位于完整指令之后&#xff0c;这类情况表示符号后面的是注解文字&#xff0c;不会被执行。 # This line is comments.…

unity学习(32)——跳转到角色选择界面(父子类问题)

新问题 应该是两个脚本之间缺少继承关系 its children 解决起来很简单&#xff0c;把ResceneScript也绑到canvas上就可以了 。 此时&#xff0c;在账号密码正确的情况下&#xff0c;是可以完成场景切换。 对应的代码如下&#xff1a; TMP_Text d GameObject.FindWithTag(&…

嵌入式Linux学习DAY20

文件io 文件io和标准io的区别&#xff1a; 1.标准io是库函数&#xff0c;是对系统调用的封装 2.文件io是系统的调用&#xff0c;是Linux内核中的函数接口 3.标准io是有缓存的 4.文件io是没有缓存的 操作步骤 打开->读写->关闭 打开文件&#xff1a;open 功能&am…

了解不同颜色油封的用途

在机械领域&#xff0c;油封是保证各种设备平稳运行的关键部件。为什么油封会有很多颜色。本文旨在阐明不同颜色油封的用途及其意义。 油封有多种颜色&#xff0c;包括黑色、棕色、绿色和蓝色等。乍一看&#xff0c;这些颜色似乎只是一种审美选择。然而&#xff0c;它们有更实…

接口测试(postman/jmeter)

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 关注公众号【互联网杂货铺】&#xff0c;回复 1 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 一、什么是接口测试 通常做的接口测试指的是系统对外的接口&am…

Window部署Nacos

Nacos 现在压缩包解压后&#xff0c;修改conf/application.properties 文件 取消注释&#xff0c;修改mysql连接方式 节点nacos.core.auth.enabled 改成true 设置节点nacos.core.auth.server.identity.key、nacos.core.auth.server.identity.value 设置secret秘钥&#xff0c;…

十大常见web漏洞及防范

十大常见web漏洞 一、SQL注入漏洞 SQL注入攻击&#xff08;SQL Injection&#xff09;&#xff0c;简称注入攻击、SQL注入&#xff0c;被广泛用于非法获取网站控制权&#xff0c;是发生在应用程序的数据库层上的安全漏洞。在设计程序&#xff0c;忽略了对输入字符串中夹带的S…

javascript选择器大全

目录 1.getElementsByTagName 2.getElementsByName 3.getElementById 4.getElementsByClassName 5.querySelector 6.querySelectorAll 1.getElementsByTagName 俗称标签选择器&#xff0c;可以根据标签名查找匹配到页面的元素对象&#xff0c;返回为一个数组。 <div&…

如何使用静态住宅ip代理进行Facebook群控?

在进行Facebook群控时&#xff0c;ip地址的管理是非常重要的&#xff0c;因为Facebook通常会检测ip地址的使用情况&#xff0c;如果发现有异常的使用行为&#xff0c;比如从同一个ip地址频繁进行登录、发布内容或者在短时间内进行大量的活动等等&#xff0c;就会视为垃圾邮件或…

springcloud-远程调用

微服务的远程调用 RestTemplate 在项目中&#xff0c;当我们需要远程调用一个 HTTP 接口时&#xff0c;我们经常会用到 RestTemplate 这个类。这个类是 Spring 框架提供的一个工具类。 实例化RestTemplate 创建配置类&#xff0c;实例化RestTemplate Configuration public clas…

【递归】:原理、应用与案例解析 ,助你深入理解递归核心思想

递归 1.基础简介 递归在计算机科学中&#xff0c;递归是一种解决计算问题的方法&#xff0c;其中解决方案取决于同一类问题的更小子集 例如 递归遍历环形链表 基本情况&#xff08;Base Case&#xff09;&#xff1a;基本情况是递归函数中最简单的情况&#xff0c;它们通常是递…

揭示端侧大语言模型的无限潜力:多种量化模型,可以在个人电脑或者手机上安装部署使用,几行代码进行调研可以离线使用

揭示端侧大语言模型的无限潜力:多种量化模型,可以在个人电脑或者手机上安装部署使用,几行代码进行调研可以离线使用。 MiniCPM 是面壁智能与清华大学自然语言处理实验室共同开源的系列端侧大模型,主体语言模型 MiniCPM-2B 仅有 24亿(2.4B)的非词嵌入参数量, 总计2.7B参数…

频段划分学习射频知识的意义

一、射频电路设计与低频电路设计的不同点 随着频率提高&#xff0c;相应电磁波的波长与变得可与分立电路元件的尺寸相比拟时&#xff0c;电阻、电容和电感这些元件的电响应&#xff0c;将偏离他们的理想频率特性。以 WIFI 2.4G 频段为例&#xff0c;当频率为 2437MHz&#xff0…

Ubuntu安装wireguard服务端,windows连接

需求&#xff1a;想要随时随地远程到ubuntu电脑的内网中&#xff0c;ping通所有的内网ip&#xff0c;方便通过内网ip进行远程 一、ubuntu上安装配置wireguard服务 1&#xff0c;更新软件包并安装wireguard服务端软件 sudo apt update sudo apt install wireguard 2&#xff0…

Flutter学习1 - Android开发者快速上手

1、对应关系 概念对应关系 AndroidFlutter页面Activity和FragmentWidget视图ViewWidget页面跳转IntentNavigater网络库okHttphttp数据存储SharedPreference和SQLiteshared_preferences和sqflite 布局对应关系 AndroidFlutter布局文件xmlWidget线性布局LinearLayoutRow和Col…

C# 字典(Dictionary)基本操作

一、定义一个字典&#xff1a; // 定义一个存储字符串键和整数值的字典 Dictionary<string, int> numbers new Dictionary<string, int>(); 二、添加元素&#xff1a; // 添加键值对 numbers.Add("One", 1); numbers.Add("Two", 2); 三、通…

在线图片生成工具:定制化占位图片的利器

title: 在线图片生成工具&#xff1a;定制化占位图片的利器 date: 2024/2/20 14:08:16 updated: 2024/2/20 14:08:16 tags: 占位图片网页布局样式展示性能测试响应式设计在线生成开发工具 在现代的网页设计和开发中&#xff0c;占位图片扮演着重要的角色。占位图片是指在开发过…

力扣日记2.20-【回溯算法篇】491. 非递减子序列

力扣日记&#xff1a;【回溯算法篇】491. 非递减子序列 日期&#xff1a;2023.2.20 参考&#xff1a;代码随想录、力扣 ps&#xff1a;放了个寒假&#xff0c;日记又搁置了三星期……&#xff08;下跪忏悔&#xff09; 491. 非递减子序列 题目描述 难度&#xff1a;中等 给你一…

奇门遁甲 API接口

接口数据api 接口平台&#xff1a;https://api.yuanfenju.com/ 开发文档&#xff1a;缘份居国学研究开发者API 支持格式&#xff1a;JSON 请求方式&#xff1a;HTTP POST <?php//您的密钥 $api_secret "wD******XhOUW******pvr"; //请求择日择时接口 $gate…

django rest framework 学习笔记2

注意&#xff1a;该文章部分摘抄之百度&#xff0c;仅当做学习笔记供小白使用&#xff0c;若侵权请联系删除&#xff01; 显示关联表的数据&#xff0c;本示例会显示所有的关联的数据信息 from rest_framework import serializers from .models import Student class StudentM…