首页 > 其他分享 >html img标签的loading属性可用于懒加载图片

html img标签的loading属性可用于懒加载图片

时间:2025-01-20 22:20:38浏览次数:1  
标签:lazy loading 浏览器 img html lazyImage 图片 加载

loading 属性是 HTML <img> 标签的一个属性,用于指示浏览器何时加载图像资源。它有助于优化页面加载性能,特别是对于包含大量图片的页面。通过延迟加载(lazy loading)不在视口内的图片,可以显著减少初始页面加载时间,并提高用户体验。

loading 属性的值

loading 属性支持以下三个值:

  1. lazy:延迟加载图像,即仅在用户滚动到接近图像的位置时才加载图像。适用于大多数不在视口内的图像。
  2. eager:立即加载图像,无论图像是否在视口内。适用于希望尽快加载的关键图像,如首屏内容中的图片。
  3. auto:浏览器决定是否延迟加载图像。这是默认行为,通常等同于 lazy,但具体实现可能因浏览器而异。

使用示例

延迟加载(Lazy Loading)

<img src="example.jpg" alt="Example Image" loading="lazy">

在这个例子中,loading="lazy" 表示只有当用户滚动页面接近该图片位置时,浏览器才会开始加载这张图片。

立即加载(Eager Loading)

<img src="important-image.jpg" alt="Important Image" loading="eager">

在这个例子中,loading="eager" 表示无论图片是否在视口内,浏览器都会立即加载这张图片。

实际应用中的注意事项

  1. 兼容性:现代浏览器(包括 Chrome、Firefox、Edge 和 Safari)都支持 loading 属性。然而,如果你需要支持较旧的浏览器,你可能需要使用 JavaScript 库(如 lazysizes)来实现类似的功能。

  2. 占位符和渐进式加载:为了提升用户体验,你可以为延迟加载的图片设置一个占位符或低分辨率的预览图。这样,在图片完全加载之前,用户可以看到一个替代的内容。

    <img src="low-res-example.jpg" data-src="example.jpg" alt="Example Image" loading="lazy" class="lazyload">
    

    结合 CSS 或 JavaScript 可以进一步优化显示效果。

  3. SEO 考虑:确保所有图片都有适当的 alt 属性描述,这对于搜索引擎优化(SEO)和可访问性都很重要。

  4. JavaScript 回退:尽管 loading 属性已经被广泛支持,但在某些情况下,你可能仍然希望通过 JavaScript 提供回退机制。

    document.addEventListener("DOMContentLoaded", function() {
        var lazyImages = [].slice.call(document.querySelectorAll("img[loading=lazy]"));
        if ("IntersectionObserver" in window) {
            let lazyImageObserver = new IntersectionObserver(function(entries, observer) {
                entries.forEach(function(entry) {
                    if (entry.isIntersecting) {
                        let lazyImage = entry.target;
                        lazyImage.src = lazyImage.dataset.src;
                        lazyImage.srcset = lazyImage.dataset.srcset;
                        lazyImage.classList.remove("lazy");
                        lazyImageObserver.unobserve(lazyImage);
                    }
                });
            });
    
            lazyImages.forEach(function(lazyImage) {
                lazyImageObserver.observe(lazyImage);
            });
        } else {
            // Fallback for browsers that do not support IntersectionObserver
            lazyImages.forEach(function(img) {
                img.src = img.getAttribute('data-src');
            });
        }
    });
    

总结

loading 属性是一个简单且有效的工具,用于控制网页中图片的加载策略。通过合理地使用 lazyeager 值,可以显著改善页面的加载性能和用户体验。同时,考虑到浏览器的兼容性和其他因素,必要时可以结合 JavaScript 进一步增强功能。

标签:lazy,loading,浏览器,img,html,lazyImage,图片,加载
From: https://www.cnblogs.com/jocongmin/p/18682594

相关文章

  • 如果在写HTML时漏写了闭合标签,怎么办呢?
    在HTML中,有些标签是自闭和的(如<img>、<br>、<input>等),这些标签不需要闭合标签。但是,对于需要闭合的标签(如<div>、<p>、<span>等),如果忘记了闭合标签,可能会导致页面布局错乱、样式应用不正确或者JavaScript脚本出错等问题。如果你在写HTML时漏写了闭合标签,以下是一些建议的解决方法......
  • 你是如何组织html代码的?
    在前端开发中,组织HTML代码是一个至关重要的步骤,因为它直接影响到代码的可读性、可维护性以及页面的性能。以下是一些建议和实践,帮助你更好地组织HTML代码:使用语义化标签:HTML5引入了许多语义化标签,如<header>,<footer>,<article>,<section>等。这些标签不仅有助于搜索引擎理......
  • 你有使用过HTML5的dialog标签吗?说说看,它有什么特点?
    是的,我使用过HTML5的dialog标签,并且对其特点有深入的了解。HTML5的dialog标签是一个用于展示交互式模态对话框的语义化双标签。以下是它的主要特点:语义化:dialog标签是HTML5新增的语义化标签,专门用于表示对话框,这有助于提升代码的可读性和可维护性。模态与非模态显示:dialog标......
  • 怎么使用HTML5实现录音的功能?
    在前端开发中,使用HTML5实现录音功能通常涉及到WebAudioAPI和MediaRecorderAPI。以下是一个简单的示例,说明如何使用MediaRecorderAPI来录制音频:获取媒体权限:首先,你需要获取用户的媒体权限。这通常通过navigator.mediaDevices.getUserMedia方法实现。navigator.mediaDevice......
  • html的a标签属性rel="noopener"有什么作用?
    在HTML中,<a>标签的rel属性用于定义当前文档与被链接文档之间的关系。rel="noopener"是其中的一个值,它主要的作用是在打开新窗口或新标签页时,防止新页面通过window.opener属性访问到原页面的window对象。这可以提高网站的安全性,防止一些潜在的跨站脚本攻击(XSS)或反向Tabnabb......
  • HTML5如何唤醒APP?
    在前端开发中,HTML5本身并不直接提供“唤醒APP”的功能。但是,你可以使用一些技术或策略来实现类似的效果,具体取决于你的需求和目标平台(如iOS、Android等)。以下是一些常见的方法:使用URLScheme:许多APP都支持自定义的URLScheme,这允许你通过特定的URL格式来打开或唤醒APP。例如......
  • 织梦CMS首页URL优化:去掉index.html
    在使用织梦CMS搭建网站时,很多用户希望将首页URL从域名/index.html简化为域名,以提升网站的专业形象和用户体验。以下是实现这一目标的步骤:修改伪静态规则:登录织梦CMS后台,进入“系统”->“系统基本参数”->“核心设置”,找到“是否使用伪静态”,选择“是”。根据服务器类型(A......
  • HTML网页制作初学习
    文章目录1.认识HTML2.标签介绍2.1换行标签2.2水平线标签2.3标题标签2.4字体标签2.5段落标签2.6图片标签2.7超链接2.8锚链接2.9特殊符号前言:博主的编译软件为VSCode,编译软件不同或许写的方法不同1.认识HTMLHTML指的是超文本标记语言(HyperTextMarkupLangua......
  • 举例说明HTML5的标签meter的用法
    HTML5的<meter>标签用于表示一个范围内的测量值或者一个分数值。这个标签特别适用于表示像磁盘使用量、查询结果的相关性或者产品评分这样的数据。<meter>标签通常用于表示已知范围的测量值,例如0到100。<meter>标签有以下几个重要的属性:value:表示当前的测量值,必须在mi......
  • HTML5的output是非常棒的一个标签,你对它有了解吗?
    HTML5中的<output>标签确实是一个很有用的元素,它主要用于在网页上表示计算结果或脚本的输出。以下是对<output>标签的详细解释:一、定义与用法<output>标签是HTML5中新增的元素,用于定义不同类型的输出,特别是当需要展示脚本计算或处理后的结果时。这个标签通常与<form>表单元素一......