首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

css延迟图片加载效果

CSS延迟图片加载效果

基础概念

CSS延迟图片加载(Lazy Loading)是一种优化网页性能的技术,它通过延迟加载非首屏图片,减少初始页面加载时间,从而提升用户体验。这种技术通常结合JavaScript来实现,但也可以通过纯CSS实现简单的延迟加载效果。

相关优势

  1. 提升页面加载速度:减少首屏加载的资源量,加快页面显示速度。
  2. 节省带宽:用户只加载他们实际看到的图片,减少不必要的数据传输。
  3. 改善用户体验:用户在滚动页面时,图片按需加载,减少等待时间。

类型

  1. 纯CSS实现:利用CSS的content-visibility属性和will-change属性来实现简单的延迟加载效果。
  2. JavaScript实现:通过监听滚动事件,动态加载图片。

应用场景

  • 长页面:如新闻网站、博客等,页面包含大量图片。
  • 电商网站:产品详情页包含多张图片。
  • 社交媒体:用户动态或帖子中包含大量图片。

示例代码(纯CSS实现)

代码语言:txt
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>CSS Lazy Loading</title>
    <style>
        .lazy-image {
            width: 100%;
            height: 300px;
            background-color: #f0f0f0;
            content-visibility: auto;
            will-change: transform;
        }
        .lazy-image img {
            width: 100%;
            height: auto;
            opacity: 0;
            transition: opacity 0.5s;
        }
        .lazy-image img.loaded {
            opacity: 1;
        }
    </style>
</head>
<body>
    <div class="lazy-image">
        <img data-src="image1.jpg" alt="Image 1">
    </div>
    <div class="lazy-image">
        <img data-src="image2.jpg" alt="Image 2">
    </div>
    <script>
        document.addEventListener("DOMContentLoaded", function() {
            const images = document.querySelectorAll('.lazy-image img');
            const observer = new IntersectionObserver((entries, observer) => {
                entries.forEach(entry => {
                    if (entry.isIntersecting) {
                        const img = entry.target;
                        img.src = img.dataset.src;
                        img.classList.add('loaded');
                        observer.unobserve(img);
                    }
                });
            }, { threshold: 0.1 });

            images.forEach(img => {
                observer.observe(img);
            });
        });
    </script>
</body>
</html>

参考链接

遇到的问题及解决方法

  1. 图片加载顺序问题:有时候图片加载顺序可能不符合预期。可以通过调整IntersectionObserver的配置参数来解决。
  2. 图片闪烁问题:当图片从隐藏到显示时,可能会出现闪烁现象。可以通过CSS的opacity过渡效果来平滑显示。
  3. 兼容性问题:部分旧版浏览器可能不支持IntersectionObserver API。可以通过Polyfill来解决兼容性问题。

通过以上方法,可以有效实现CSS延迟图片加载效果,提升网页性能和用户体验。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

WordPress图片延迟加载(懒加载)

需求 当页面图片特别多,默认访问的时候就会将页面全部内容加载完,等待时间过长,体验欠佳,需改进。...如果不进行设置的话,一个页面会一次性加载所有的资源数据,考虑到不可能所有访客会全部将页面看完,也会导致流量的浪费,加载体验上有待提升。这里就采用延迟加载的方案。...延迟加载也称懒加载,前端实现的方式多种多样,可以通过css的属性设为display none,进入到view的图片再改为inline,inlineblock。...在插件设置界面可以选择延迟加载的内容,如:文本、小部件、缩略图、头像、图片、子窗口。 如果只想针对图片的话,只需要启动lazy load images即可。...如想要指定某些图片不不需要延迟加载,在图片标签上加入标记类名即可。 Post Views: 293

2.5K30
  • lazyload图片延迟加载 适用所有类型

    关于lazyload图片延迟加载简单介绍 LazyLoad大家再熟悉不 过的一个jquery插件了,它可以延迟加载长页面中的图片....图片不多 的页面时,效果并不太明显,但是当页面大图片比较多的时候,这种效果就比较显著了,明显加快了页面的加载速度。...因此,比较流行的wordpress主题,typecho主题,emlog主题等都使用了lazyload图片延迟加载来实现快速加载页面。...在上述代码中,img是延迟加载所有图片,这里你可以根据不同模板作相应改动。...比如我现在使用的大前端主题,可以改成.container img,这样更改后,只延迟加载.container容器内的图片,否则主题侧边的头像和协议图片也跟着延迟加载,等最后才加载出来。

    1.1K10

    图片懒加载组件封装,加载时loading效果,加载失败暂时默认图片

    scroll-top Number 是 传入滚动值监听并触发组件 mode String 否 同image组件的mode属性 loading-mode String 否 looming-gray loading加载中的占位图效果...open-transition Boolean 否 true 是否开启加载成功后的渐现过渡效果 view-height Number 否 真机可视窗高度 可视区域高度 view-height属性说明...在大量图片在同一个页面使用该组件时可传入可视区域高度,避免重复获取窗口高度 你也可以在页面(父组件)传入比真机可视窗高度更大的值当做阈值提前进入加载 loading属性说明 值 说明 spin-circle...转圈圈 looming-gray 动态灰背景若隐若现 skeleton-1 骨架屏效果1 skeleton-2 骨架屏效果2 你也可以在以此类推在源码上修改或者扩展为你理想的样式 使用深度作用选择器...>>>或在插件源码CSS部分上进行样式修改 类名元素说明 类名 说明 .easy-loadimage 图片父元素 .origin-img 源图片 .loading-img 加载占位图 .loadfail-img

    1.3K10

    延迟加载图片的 jQuery 插件:Lazy Load

    网站的速度非常重要,现在有很多网站优化的工具,如 Google 的 Page Speed,Yahoo 的 YSlow,对于网页图片,Yahoo 还提供 Smush.it 这个工具对图片进行批量压缩,但是对于图片非常多的网站...,载入网页还是需要比较长的时间,这个时候我们可以使用 Lazy Load 这个 jQuery 插件来延迟加载图片。...Lazy loader 是一个延迟加载图片的 jQuery 插件,在一些图片非常多的网站中非常有用,在在浏览器可视区域外的图片不会被载入,直到用户将页面滚动到它们所在的位置才加载,这样对于含有很多图片的比较长的网页来说...,可以加载的更快,并且还能节省服务器带宽。...Lazy Loader 使用也非常简单,首先确保你的页面已经加载 jQuery Javascript 库,然后在加载 Lazy Load 的 Javascript 文件: <script src="jquery.js

    1.9K40

    lazyload.js实现图片异步延迟加载

    所谓图片异步加载,意思是不用一次把图片全部加载完,你可以叫它延迟加载,缓冲加载都行。...看看你有没有这JavaScript 所谓图片异步加载,意思是不用一次把图片全部加载完,你可以叫它延迟加载,缓冲加载都行。...; 代码精简,便于操作维护,JS代码仅仅 1.6KB 先决条件是:你的站加载了 Jquery.js 原理: 这个特效是少有的即华丽又加速的效果,因为它能判断访客是不是在查看当前图片,若非则加载预留的填充图片...不用担心对访客的友好程度,这个效果会在图片即将被浏览到的时候就开始加载图片; 实现方法: 下载 jquery.lazyload.js      下载 预填充图片 fill.gif 点此打包下载.../grey.gif", //加载图片前的占位图片 effect : "fadeIn" //加载图片使用的效果(淡入) }); }); 本文由来源 21aspnet,由 javajgs_com

    12.8K20

    第七节图片延迟加载

    图片延迟加载/图片懒加载的作用:保证页面打开的速度(3s之后如果首页打不开被称为死亡页面) 原理: 1>对于首屏内容中的图片:首先给对应的区域一张默认图片占着位置(默认图需要非常的小,一般可以维持在5kb...以内) 当首屏内容都加载完成后(或者也可以给一个延迟的时间),再开始加载真实的图片 2>对于其它屏中的图片:也是给一张默认的图片占位,当滚动条滚动到对应区域的时候,我们再开始加载真实的图片 网站性能优化的几种方式...: 尽量减少向服务器请求的次数(减少http请求) css/js文件进行合并 icon图片也进行合并--->雪碧图 图片的延迟加载 数据的异步加载 在移动端,如果我做的是一个简单的宣传页,尽量的把css...和js写好内嵌式 首屏延迟加载: 如果获取的图片地址是错误的当赋值给img的src属性的时候不仅控制台会报错,而且页面中会出现碎图或叉图,所以我们获取图片的地址之后要验证地址的有效性,是有效的才赋值...oimgFir.style.display = 'block'; oimg = null; }; }, 500); 其他屏单张图片延迟加载

    79510

    基于jQuery或Zepto的图片延迟加载插件

    当我们网站的页面图片过多时,加载速度就会很慢。尤其是用手机2G/3G访问页面,不仅页面慢,而且还会用掉很多流量。...我们主题之前也都采用了图片的懒加载形式,但都不完美,部分主题还采用了占位图片来控制懒加载,今天换一种js图片懒加载,它原理就是将页面内所有需要加载的图片全部换成一张默认的图片(一般尺寸很小),只有图片在可视区域才去请求加载...实现原理 页面打开时首先会加载src里的图片,即很小的加载图;通过监听scroll...事件,当图片在可视区域时,使用data-src替换src,加载真正的图片。...--lazyload.js默认懒加载原图片属性是data-original--><img class="lazy" src="loading.png" data-original="img/example.jpg

    3.2K20

    CSS实现图片磨砂玻璃效果

    写在前面 偶然看到,整理笔记 博文涉及内容: 使用CSS实现图片的磨砂玻璃效果Demo 相关属性的简单文档说明 理解不足小伙伴帮忙指正 「 傍晚时分,你坐在屋檐下,看着天慢慢地黑下去,心里寂寞而凄凉,感到自己的生命被剥夺了...--------王小波」 ---- 这里的 磨砂玻璃效果主要使用 CSS的滤镜效果实现,滤镜效果是 CSS 的一个模块,它定义了一种HTML元素显示在文档顶层,处理其渲染的方式。...属性实现 backdrop-filter CSS 属性: 可以让你为一个元素后面区域添加图形效果(如模糊或颜色偏移)。...CSS box-shadow 属性用于在元素的框架上添加阴影效果。你可以在同一个元素上设置多个阴影效果,并用逗号将他们分隔开。...这里的 filter 和最上面的 backdrop-filter 基本类似,包括渲染函数基本相同,filter CSS属性将图形效果(如模糊或移色)应用于一个元素。

    96541

    CSS中鼠标滑过图片放大效果

    刚刚看了下感觉还不错,纯CSS实现,虽然在开发主题时CSS3用的比较少。...这是一款简单实用的CSS3鼠标滑过图片放大特效,我们可以将它应用在相册中,或者是轮播展示的图片中,这样可以将鼠标移到图片上进行快速预览图片。同时你也可以在此基础上扩展它,比如给图片加投影和边框等。...CSS3中鼠标滑过图片突出放大效果 悬停时展开项目 我们的下一步是让项目在悬停时展开。...CSS3中鼠标滑过图片突出放大效果 向外移动兄弟元素 让悬停项的兄弟项远离悬停项是整个过程中很棘手的部分。我们可以使用的一个CSS特性是一般的兄弟组合器。这使我们可以选择位于悬停项之后的所有同级项。...CSS3中鼠标滑过图片突出放大效果 向外移动兄弟元素 此时悬停效果看起来更加圆滑,不再那么生硬。需要注意的一点是:此最终版本正在使用:focus和:focus-within伪类来支持键盘导航。

    8.4K10
    领券