首页
学习
活动
专区
圈层
工具
发布

jquery 图片延时加载

基础概念

jQuery 图片延时加载(Lazy Loading)是一种优化网页性能的技术,它允许网页上的图片在用户滚动到它们的位置时才进行加载,而不是一次性加载所有图片。这样可以减少初始页面加载时间,提高用户体验。

优势

  1. 减少初始加载时间:只加载用户当前可见区域的图片,减少服务器负载和带宽消耗。
  2. 提高页面性能:通过延迟加载非关键资源,提升页面的响应速度。
  3. 节省流量:对于移动设备用户,节省宝贵的流量资源。

类型

  1. 基于滚动位置的加载:当用户滚动到图片位置时,触发加载。
  2. 基于预取的加载:在用户浏览页面时,提前加载即将进入视口的图片。
  3. 基于占位符的加载:使用低分辨率的占位符图片,当用户滚动到位置时再加载高分辨率图片。

应用场景

  • 电商网站:展示大量商品图片的页面。
  • 新闻网站:长文章中的图片。
  • 社交媒体:用户动态中的图片。

实现方法

以下是一个简单的 jQuery 图片延时加载的示例代码:

代码语言:txt
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>jQuery Lazy Loading</title>
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    <style>
        img {
            width: 100%;
            height: auto;
            display: block;
        }
        .lazy {
            background: url('placeholder.jpg') no-repeat center center;
            background-size: cover;
        }
    </style>
</head>
<body>
    <img class="lazy" data-src="image1.jpg" alt="Image 1">
    <img class="lazy" data-src="image2.jpg" alt="Image 2">
    <img class="lazy" data-src="image3.jpg" alt="Image 3">
    <!-- More images -->

    <script>
        $(document).ready(function() {
            function lazyLoad() {
                $('.lazy').each(function() {
                    if ($(this).offset().top < $(window).scrollTop() + $(window).height()) {
                        var imgSrc = $(this).data('src');
                        $(this).attr('src', imgSrc).removeClass('lazy');
                    }
                });
            }

            $(window).scroll(lazyLoad);
            lazyLoad(); // Initial check
        });
    </script>
</body>
</html>

常见问题及解决方法

  1. 图片加载顺序问题:如果图片加载顺序不正确,可能会导致布局抖动。可以通过设置占位符图片来避免这个问题。
  2. 滚动事件触发频繁:频繁的滚动事件可能导致性能问题。可以使用节流(throttling)或防抖(debouncing)技术来优化滚动事件处理。
  3. 图片加载失败:如果图片加载失败,可以设置一个默认的错误图片或者重试机制。
代码语言:txt
复制
$(window).on('error', 'img', function() {
    $(this).attr('src', 'default-error.jpg');
});

通过以上方法,可以有效实现 jQuery 图片延时加载,并解决一些常见问题。

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

相关·内容

  • jQuery实现图片懒加载

    一、懒加载 1.什么是懒加载 目前,网络上各大论坛,尤其是一些图片类型的网站上,在图片加载时均采用了一种名为懒加载的方式,具体表现为,当页面被请求时,只加载可视区域的图片,其它部分的图片则不加载,只有这些图片出现在可视区域时才会动态加载这些图片...2.懒加载的原理 页面中的img元素,如果没有src属性,浏览器就不会发出请求去下载图片,只有通过javascript设置了图片路径,浏览器才会发送请求。...懒加载的原理就是先在页面中把所有的图片统一使用一张占位图进行占位,把正真的路径存在元素的自定义属性“data-src”(这个名字起个自己认识好记的就行)里,要用的时候就取出来,把它的值赋值给img的src...function lazyRender() { $('.container img').each(function(){ //判断图片是否出现在可视窗口和图片是否已经加载...isLoaded($(this)) ){ //若图片出现在可是区域且没有加载,加载图片 loadImg($(this))

    14.9K20

    JQuery之图片懒加载

    由于现在很多的网站都带有大量的图片,而图片的加载又会特别的慢,特别是在移动端,懒加载就显的特别重要了,说白了就是按需加载,用户要看到哪里就显示哪里,下面来记录一下懒加载的基本实现步骤!...1.引入jquery.js与jquery.lazyload.js,由于jquery.lazyload.js依赖于jquery,所以必须要引入jquery 加载效果、没有加载时显示的默认图片等等,可以简单的封装一个方法,方便去调用. function lazy(className) {   $(className).lazyload({...//图片在距离屏幕 200 像素时提前加载.     ...threshold: 200,     //将图片加载放进click事件中(不常用)     event:"click",       //加载隐藏的图片(不常用)     skip_invisible

    5.4K10

    实现图片懒加载jquery.scrollLoading.js

    首先需要jquery.min.js插件,我用的是jQuery v2.1.3,大家可以去百度搜很多自己引入全局顶部即可,当然你的程序自带就不需要在引用JQ了。...第一步 找到你的全局顶部文件,上面已经说了如果你程序自带jq就忽略即可,大概就这样吧 第二步 找到你的底部文件,增加两段jspiex.gif为你要首次懒加载的图片,图片大家可以自己去找或者用我的 点击查看懒加载图片...实在不懂是哪个建议先进入到你的文章页按F12打开控制台看看加载了哪个js就扔进去 (function($) { $.fn.scrollLoading = function(options) {...在浏览器窗口内 if (tag === "a" || tag === "i") { //图片...loading(); //滚动执行 params.container.bind("scroll", loading); }; })(jQuery

    2.7K20

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

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

    2.4K40

    基于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.7K20

    什么是Hibernate延时加载?

    session上的load()加载一个实体时,会采用延迟加载。...2、当session加载某个实体时,会对这个实体中的集合属性值采用延迟加载。 3、当session加载某个实体时,会对这个实体所有单端关联的另一个实体对象采用延迟加载。...---- 延迟加载也称为懒加载,是Hibernate3关联关系对象默认的加载方式,所谓延迟加载就是当在真正需要数据的时候,才真正执行数据加载操作。...---- 延时加载是指:不是一开始就创建对象,而是当要调用的时候才去创建对象。...延时加载不是问题,是为了解决问题,在hibernate中,有两种关系是相对存在的,就是一对多和多对一,如果同时使用这两种关系,并且不使用延迟加载会很麻烦的。 比如:学生和班级的关系。

    96920

    jquery scroll 滚动加载列表 获取腾讯云图片像素信息

    jquery scroll 滚动加载列表 获取腾讯云图片像素信息 场景描述 问题处理 其他问题处理 场景描述 bootstarp列表加载图片时需要同时获取图片的像素(宽and高),对于腾讯云这类远程存储获取图片来说...,虽然也可以通过java后台调用腾讯云接口获取图片像素,但是在列表加载大量图片并且没有分页的情况下,如果通过后台逐个获取图片像素信息返回给前台页面渲染的话,会导致前台页面迟迟加载不出来,且有浏览器内存耗尽卡死的风险...,并且腾讯云获取图片像素信息的接口还有频限100的限制,这就更导致了通过后台获取图片像素方案的不适用,那么如果通过页面jquery获取图片像素的时候当图片量很大的时候也是会出现卡顿,加载慢的情况,这个时候就考虑的热区内图片展示像素...,非热区内图片待鼠标下滑啊时再加载像素信息方案的产生。...,待滚动鼠标时再拉去当前页面热区内未加载图片像素信息的图片像素 其他问题处理 由于业务需要,除了列表页,我们同时增加了视图模式,效果如图 列表增加了滚动加载图片像素信息的方法,那么视图模式同样也需要,视图代码结构

    77410

    缓冲加载图片的 jQuery 插件 lazyload.js 使用方法详解

    Lazy Load 这个 jQuery 插件,是用来缓冲加载图片的插件。如果一篇文章很长有很多图片的话,下载图片就需要很多时间。...如果一个人不看下面的图片,那加载下面的图片就是一种浪费。 Lazy Load 插件原理 修改目标 img 的 src 属性为 orginal 属性,从而中断图片的加载。...潜行者m博客上,就用了这个插件,不过没用使用官方说的那种结构,要的只是一个缓冲加载的效果。 开始使用 lazyload.js 第一步:加载相关文件。 很明显,你要加载jquery和这个插件。...你可以使用以下代码,加载这几个文件: jquery.js" type="text/javascript"> jquery.lazyload.js...上面这个语句的意思是,当距离图片还有200像素的时候,就开始加载图片。 自定义触发事件 默认的触发事件,是滚动,当你滚动的时候,就会检查然后加载。

    3.5K10
    领券