当前位置: 首页 > news >正文

html懒人加载实现

在HTML中,懒加载(Lazy Load)是一种延迟加载图片或其他资源的技术,它可以提高页面的加载速度和性能。下面是一种实现懒加载的方法:

  1. 设置默认占位图片:在HTML中,为要延迟加载的图片设置一个默认的占位符图片,它将在图片加载之前显示。
    <img src="placeholder.jpg" data-src="image.jpg" alt="Lazy Load Image">

  2. 添加JavaScript代码:为了实现懒加载,我们需要使用JavaScript来检测图片是否在视口(Viewport)中可见,如果是则加载实际图片。
    document.addEventListener("DOMContentLoaded", function() {var lazyImages = [].slice.call(document.querySelectorAll("img[data-src]"));if ("IntersectionObserver" in window) {var lazyImageObserver = new IntersectionObserver(function(entries, observer) {entries.forEach(function(entry) {if (entry.isIntersecting) {var lazyImage = entry.target;lazyImage.src = lazyImage.dataset.src;lazyImage.classList.remove("lazy");lazyImageObserver.unobserve(lazyImage);}});});lazyImages.forEach(function(lazyImage) {lazyImageObserver.observe(lazyImage);});} else {// 如果浏览器不支持Intersection Observer,则简单地将所有的图片加载lazyImages.forEach(function(lazyImage) {lazyImage.src = lazyImage.dataset.src;lazyImage.classList.remove("lazy");});}
    });

    此JavaScript代码使用Intersection Observer API(如果浏览器支持)来观察图片是否在视口中可见。如果图片可见,则将实际图片的URL赋值给src属性,并从lazy类中移除。如果浏览器不支持Intersection Observer,那么它会简单地将所有图片加载出来。 3. 样式调整:为了更好地展示懒加载效果,你可以为占位符图片和实际图片添加一些样式。

    img {max-width: 100%;height: auto;display: block;
    }
    .lazy {filter: blur(5px); /* 可选:模糊效果 */opacity: 0.5; /* 可选:透明度降低 */
    }

    以上是一种实现懒加载的方法。当页面滚动或重新调整大小时,图片将根据它们在视口中的可见性自动加载。 请注意,懒加载并不局限于图片,你也可以将它应用于其他需要延迟加载的资源,比如视频或音频文件

   完整代码

<!DOCTYPE html>
<html>
<head><title>Lazy Load</title><style>img {max-width: 100%;height: auto;display: block;}.lazy {filter: blur(5px); /* 可选:模糊效果 */opacity: 0.5; /* 可选:透明度降低 */}</style>
</head>
<body>
<h1>Lazy Load Example</h1>
<img src="https://preview.qiantucdn.com/58pic/36/28/63/18558PICu3b842hxJc6mW_PIC2018.gif!w1024_new_small" data-src="https://img1.baidu.com/it/u=422078137,1307526884&fm=253&fmt=auto&app=120&f=JPEG?w=1280&h=800" alt="Lazy Load Image" class="lazy">
<img src="https://preview.qiantucdn.com/58pic/36/28/63/18558PICu3b842hxJc6mW_PIC2018.gif!w1024_new_small" data-src="https://img2.baidu.com/it/u=2546424698,318222608&fm=253&fmt=auto&app=138&f=JPEG?w=889&h=500" alt="Lazy Load Image" class="lazy">
<img src="https://preview.qiantucdn.com/58pic/36/28/63/18558PICu3b842hxJc6mW_PIC2018.gif!w1024_new_small" data-src="https://img1.baidu.com/it/u=422078137,1307526884&fm=253&fmt=auto&app=120&f=JPEG?w=1280&h=800" alt="Lazy Load Image" class="lazy">
<img src="https://preview.qiantucdn.com/58pic/36/28/63/18558PICu3b842hxJc6mW_PIC2018.gif!w1024_new_small" data-src="https://img1.baidu.com/it/u=422078137,1307526884&fm=253&fmt=auto&app=120&f=JPEG?w=1280&h=800" alt="Lazy Load Image" class="lazy">
<img src="https://preview.qiantucdn.com/58pic/36/28/63/18558PICu3b842hxJc6mW_PIC2018.gif!w1024_new_small" data-src="https://img2.baidu.com/it/u=2546424698,318222608&fm=253&fmt=auto&app=138&f=JPEG?w=889&h=500" alt="Lazy Load Image" class="lazy">
<img src="https://preview.qiantucdn.com/58pic/36/28/63/18558PICu3b842hxJc6mW_PIC2018.gif!w1024_new_small" data-src="https://img1.baidu.com/it/u=3622442929,3246643478&fm=253&fmt=auto&app=138&f=JPEG?w=889&h=500" alt="Lazy Load Image" class="lazy">
<img src="https://preview.qiantucdn.com/58pic/36/28/63/18558PICu3b842hxJc6mW_PIC2018.gif!w1024_new_small" data-src="https://img1.baidu.com/it/u=422078137,1307526884&fm=253&fmt=auto&app=120&f=JPEG?w=1280&h=800" alt="Lazy Load Image" class="lazy">
<img src="https://preview.qiantucdn.com/58pic/36/28/63/18558PICu3b842hxJc6mW_PIC2018.gif!w1024_new_small" data-src="https://img2.baidu.com/it/u=2546424698,318222608&fm=253&fmt=auto&app=138&f=JPEG?w=889&h=500" alt="Lazy Load Image" class="lazy">
<img src="https://preview.qiantucdn.com/58pic/36/28/63/18558PICu3b842hxJc6mW_PIC2018.gif!w1024_new_small" data-src="https://img2.baidu.com/it/u=2312383180,3750420672&fm=253&fmt=auto&app=120&f=JPEG?w=1280&h=800" alt="Lazy Load Image" class="lazy"><script>document.addEventListener("DOMContentLoaded", function() {var lazyImages = [].slice.call(document.querySelectorAll("img.lazy"));if ("IntersectionObserver" in window) {var lazyImageObserver = new IntersectionObserver(function(entries, observer) {entries.forEach(function(entry) {if (entry.isIntersecting) {var lazyImage = entry.target;lazyImage.src = lazyImage.dataset.src;lazyImage.classList.remove("lazy");lazyImageObserver.unobserve(lazyImage);}});});lazyImages.forEach(function(lazyImage) {lazyImageObserver.observe(lazyImage);});} else {lazyImages.forEach(function(lazyImage) {lazyImage.src = lazyImage.dataset.src;lazyImage.classList.remove("lazy");});}});
</script>
</body>
</html>

实现效果

http://www.lryc.cn/news/263668.html

相关文章:

  • Axure情形动作篇(ERP登录效验)
  • LeetCode刷题--- 子集
  • 【SQL】根据年份,查询每个月的数据量
  • 基于CTF探讨Web漏洞的利用与防范
  • Apache CouchDB 垂直权限绕过漏洞 CVE-2017-12635 已亲自复现
  • 海康威视IP网络对讲广播系统命令执行漏洞(CVE-2023-6895)
  • IDE:DevEco Studio
  • 【QT】C++/Qt使用Qt自带工具windeployqt打包
  • Ubuntu系统的基础操作和使用
  • harmonyOS 自定义组件基础演示讲解
  • 我的创作纪念日——成为创作者第1024天
  • 正点原子驱动开发BUG(一)--SPI无法正常通信
  • SpringBoot接入轻量级分布式日志框架GrayLog
  • 光电器件:感知光与电的桥梁
  • Ceph入门到精通-smartctl 查看硬盘参数
  • Module build failed: TypeError: this.getOptions is not a function
  • 蓝牙电子价签芯片OM6626/OM628超低功耗替代NRF52832
  • ELK(八)—Metricbeat部署
  • Ansible自动化运维以及模块使用
  • 数据分析场景下,企业大模型选型的思路与建议
  • Mongodb复制集架构
  • 云原生之深入解析Kubernetes集群发生网络异常时如何排查
  • error: C2039: “qt_metacast“: 不是 “***“ 的成员
  • 量子计算:开启IT领域的新时代
  • 数据可视化---柱状图
  • 第十七章 爬虫scrapy登录与中间件2
  • 运维知识点-Kubernetes_K8s
  • 某电子文档安全管理系统存在任意用户登录漏洞
  • 音视频参数介绍
  • vue中使用minio上传文件