
原生js实现懒加载
自定义属性存储图片地址:将图片的真实地址存储在自定义属性中,例如 初始加载显示占位图:在页面初次加载时,展示一张占位图(可用一张透明的图片或简单的HTML元素代替),直到动态加载所需图片。 图片占位图的设置:在页面初次加载时,确保展示一个占位图,以提升用户体验。 自定义属性的命名:选择一个清晰且不易被破坏的自定义属性名,如 图片高度的获取:确保每张图片的
发布日期:2021-05-10 03:43:41
浏览次数:24
分类:精选文章
本文共 1819 字,大约阅读时间需要 6 分钟。
图片懒加载是一种优化页面加载速度的技术,通过延迟加载图片来减少初始页面加载时间,提升用户体验。以下是实现懒加载的关键原理及技术实现方法。
懒加载的核心原理
懒加载的核心思想是通过设置图片的src为空,等到页面已加载到某个位置时,再动态加载所需的图片。具体实现方式如下:
data-src
或 date-src
。这样可以避免在页面初次加载时将所有图片加载到内存中。实现懒加载必备的技术知识
在实现懒加载前,需要掌握以下关键知识点:
自定义属性的获取方法: 使用 getAttribute
方法可以获取自定义属性。例如:
element.getAttribute('data-src')
这样可以轻松获取存储在自定义属性中的图片地址。
相关的内置方法和属性:
clientHeight
:表示当前页面的 viewport 高度。scrollHeight
:表示页面总高度。offsetTop
:表示元素相对于 viewport 的垂直位置。scrollTop
:表示页面当前滚动的位置。
图片加载的触发条件: 当页面滚动到某个位置时,检查是否需要加载下一张图片。通常的触发条件是:当前图片的 offsetTop
小于等于 viewport 的高度加上当前滚动位置。
实现懒加载的具体步骤
获取所有图片元素: 首先,获取页面中所有的图片元素。可以使用 getElementsByTagName
方法。
const imgs = document.getElementsByTagName('img');
初始化变量:
n
:记录当前已经加载的图片数量。seeHeight
:记录 viewport 的高度,通常设置为document.documentElement.clientHeight
。h
:记录每张图片的高度,通常通过getAttribute('date-h')
获取。index
:计算初始时可以同时加载的图片数量。
初始化加载: 根据 viewport 的高度和每张图片的高度,计算初始时可以同时加载的图片数量,并设置这些图片的 src
属性。
const seeHeight = document.documentElement.clientHeight;const h = imgs[0].getAttribute('date-h');const index = Math.floor(seeHeight / h);for (let i = 0; i <= index; i++) { imgs[i].src = imgs[i].getAttribute('date-src');}
滚动触发加载: 在页面滚动时,检查是否需要加载下一张图片。具体实现如下:
window.onscroll = function() { for (let i = n; i < imgs.length; i++) { const scrollTop = document.body.scrollTop || document.documentElement.scrollTop; if (imgs[i].offsetTop < seeHeight + scrollTop) { if (imgs[i].getAttribute('src') === '') { imgs[i].src = imgs[i].getAttribute('date-src'); } n = i + 1; } }}
注意事项
date-src
或 data-src
。date-h
属性正确反映其实际高度,避免因浏览器缩放导致的不一致。通过以上方法,可以实现高效的图片懒加载,显著提升页面加载速度,同时减少对内存的占用。
发表评论
最新留言
路过,博主的博客真漂亮。。
[***.116.15.85]2025年04月30日 04时48分44秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
2024版最新网络安全入门必备读书清单(非常详细)零基础入门到精通,收藏这一篇就够了
2023-01-24
2024版最新网络安全教程从入门到精通,看完这一篇就够了
2023-01-24
2024网络安全岗就业前景如何?零基础入门到精通,收藏这篇就够了
2023-01-24
2024零基础如何入门网络安全?
2023-01-24
2024,java开发,已经炸了吗?
2023-01-24
2025入门黑客技术必读书籍(非常全面)带你从小白进阶大佬!收藏这一篇就够了
2023-01-24
2025入门黑客技术必读书籍(非常全面)带你从小白进阶大佬!收藏这篇就够了
2023-01-24
2025大语言模型入门该怎么学?零基础入门到精通,收藏这篇就够了
2023-01-24
2025年3月全国计算等级考试(报名操作指南)从零基础到精通,收藏这篇就够了!
2023-01-24
2025年中国云计算市场四大趋势前瞻,从零基础到精通,收藏这篇就够了!
2023-01-24
2025年十大最佳漏洞管理工具,从零基础到精通,收藏这篇就够了!
2023-01-24
2025年网络安全五大趋势与十大威胁预测,从零基础到精通,收藏这篇就够了!
2023-01-25
2025想做黑客?先来学习 SQL 注入,零基础入门到精通,收藏这篇就够了
2023-01-25
2025春招计算机就业哪些方向最香?零基础入门到精通,收藏这篇就够了
2023-01-25
2025最全版《安全技术交底》.docx。从零基础到精通,收藏这篇就够了!
2023-01-25
2025最新大模型技术学习过程梳理,零基础入门到精通,收藏这篇就够了
2023-01-25
2025版万字长文入门大语言模型(LLM)零基础入门到精通,收藏这篇就够了
2023-01-25
2025版最新0基础怎么转行网络安全?零基础入门到精通,收藏这篇就够了
2023-01-25
2025版最新Bash Shell入门指南,零基础入门到精通,收藏这篇就够了
2023-01-25
2025版最新C++快速入门(适合小白)零基础入门到精通,收藏这篇就够了
2023-01-25