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

jquery 延迟加载js

基础概念

jQuery 延迟加载(Lazy Loading)是一种优化网页性能的技术,它允许在页面滚动到某个元素时才加载该元素的资源,而不是一次性加载所有资源。这种技术可以显著减少初始页面加载时间,提高用户体验。

相关优势

  1. 减少初始加载时间:通过延迟加载,只有当用户滚动到某个元素时才加载该元素的资源,从而减少初始页面加载时间。
  2. 节省带宽:对于图片、视频等资源,延迟加载可以显著减少带宽消耗。
  3. 提高性能:减少服务器负载,提高网页的整体性能。

类型

  1. 图片延迟加载:当用户滚动到图片位置时才加载图片。
  2. 视频延迟加载:当用户滚动到视频位置时才加载视频。
  3. 脚本延迟加载:当用户滚动到某个元素时才加载相关的 JavaScript 脚本。

应用场景

  1. 长页面:对于包含大量图片或视频的长页面,延迟加载可以显著提高加载速度。
  2. 移动设备:在移动设备上,由于带宽和性能限制,延迟加载尤为重要。
  3. 动态内容:对于动态加载的内容,延迟加载可以确保只有当内容可见时才加载相关资源。

示例代码

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

代码语言:txt
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Lazy Loading Images</title>
    <style>
        img {
            width: 100%;
            height: auto;
            display: block;
        }
        .lazy {
            background-image: url('placeholder.jpg');
            background-size: cover;
        }
    </style>
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
</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 lazyLoadImages() {
                $('.lazy').each(function() {
                    if ($(this).offset().top < $(window).scrollTop() + $(window).height()) {
                        var src = $(this).data('src');
                        $(this).attr('src', src).removeClass('lazy');
                    }
                });
            }

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

遇到的问题及解决方法

问题:图片加载顺序不正确

原因:当用户快速滚动页面时,图片可能会在它们应该显示的位置之前加载。

解决方法:使用 IntersectionObserver API 来更精确地控制图片的加载时机。

代码语言:txt
复制
document.addEventListener("DOMContentLoaded", function() {
    var lazyImages = [].slice.call(document.querySelectorAll("img.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.classList.remove("lazy");
                    lazyImageObserver.unobserve(lazyImage);
                }
            });
        });

        lazyImages.forEach(function(lazyImage) {
            lazyImageObserver.observe(lazyImage);
        });
    } else {
        // Fallback to jQuery method
        $(window).scroll(lazyLoadImages);
        lazyLoadImages();
    }
});

通过使用 IntersectionObserver,可以更高效地处理图片的延迟加载,避免加载顺序不正确的问题。

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

相关·内容

  • js基础_2(页面加载和延迟脚本)

    js标签的位置: 通常都是把关于标签放在元素中 目的:把所有外部文件css文件和javascript文件件的引用都放在相同的地方,但是 中包含js文件,只有js代码全部 下载完成后才会载入页面,但这无疑是延迟呈现页面,在延迟期间页面空白 解决:把js代码放在元素中(页面内容的后面),这样就把加载空白页面的时间缩短了...type="text/javascript" defer="defer" src="js/bootstrap.min.js"> ...属性,相当于告诉浏览器立即下载,但延迟进行,虽然我们把放在中但其中包含的延迟脚本讲遇到浏览 器标签再进行....HTML5规范要求脚本按照他们出现的先后顺序再进行,因此第一个延迟脚本会先于第二个延迟脚本进行, 而这两个脚本会先于DOMcontentLoaded事件触发前执行,但在现实当中,延迟脚本不应定会按照顺序执行

    3.9K20

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

    所谓图片异步加载,意思是不用一次把图片全部加载完,你可以叫它延迟加载,缓冲加载都行。...看看你有没有这JavaScript 所谓图片异步加载,意思是不用一次把图片全部加载完,你可以叫它延迟加载,缓冲加载都行。...lazyload.js其实是jQuery的一个插件,全称是jquery.lazyload.js,看它的名字就知道它的作用了——就是偷懒载入的意思。...站点的页面载入速度; 不唐突的图片渐显方式; 代码精简,便于操作维护,JS代码仅仅 1.6KB 先决条件是:你的站加载了 Jquery.js 原理: 这个特效是少有的即华丽又加速的效果,因为它能判断访客是不是在查看当前图片...不用担心对访客的友好程度,这个效果会在图片即将被浏览到的时候就开始加载图片; 实现方法: 下载 jquery.lazyload.js      下载 预填充图片 fill.gif 点此打包下载

    12.8K20

    【春节日更】JS延迟加载的几种方式

    面试中,经常被问到: “JS延迟加载的几种方式” 今天,我们就来分享下JS延迟加载的方式 JS延迟加载,也就是等页面加载完成之后再加载 JavaScript 文件。...JS延迟加载有助于提高页面加载速度。...一般有以下几种方式: defer 属性 async 属性 动态创建DOM方式 使用jQuery的getScript方法 使用setTimeout延迟方法 让js最后加载 1. defer...使用jQuery的getScript()方法 $.getScript("outer.js",function(){ //回调函数,成功获取文件后执行的函数 console.log...使用setTimeout延迟方法 6.让JS最后加载 把js外部引入的文件放到页面底部,来让js最后引入,从而加快页面加载速度 参考: https://blog.csdn.net/meijory/article

    1.9K30

    WordPress网站js脚本延迟和异步加载教程

    位于页面头部和主体部分内的脚本可能会导致页面加载延迟,因为浏览器甚至在页面内容之前尝试加载和执行这些脚本。 这就是为什么这些脚本被称为渲染阻塞javascripts。...解决此问题的最直接的方法是将所有脚本移动到页面的页脚,但如果这种办法不可行,则可以考虑为这些脚本添加延迟或异步属性标记,就是我们常常挂在挂在嘴边的延迟加载、异步加载。 图片 什么是异步和延迟属性?...以下是async和defer属性的作用: 异步属性:async属性即异步加载脚本。 换句话说,确保脚本与页面的其他相关内容一起异步加载。 延迟属性:延迟属性即延迟加载脚本。...根据脚本及其功能,您可能希望延迟加载或异步加载它们。 如前所述,延迟脚本仅在页面完全加载后执行,因此如果您的脚本需要在页面加载期间执行,则异步属性更合适。...如果您没有任何脚本要延迟加载,那么您可以将其保留为空白数组,如下所示,反之亦然: ## 1: 延时加载js列表.

    2.2K20

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

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

    2.2K20

    原生js与jquery加载页面元素比较

    原生js与jquery加载页面元素比较 原生js:将获取元素的语句写到页面头部,会因为元素还没有加载而出错,js提供了window.onload 这个方法事先加载元素 jquery-3.4.1.min.js"> // 1 原生js加载页面元素,window.onload.../script> 这是一个div元素 总结: 原生js加载页面元素通过window.onload...()方法 jquery加载页面元素通过ready()方法 开发中常用jquery的ready简写写法 使用jquery需要事先下载jquery库(压缩版和完整版,开发中加载压缩版即可,完整版用于平时读源码...),用srcipt标签导入jquery库的压缩版 使用jquery库需要另写一个script标签,在里面写jquery代码 ready比windown.load要快的原因是,window.load是等标签加载完

    11.4K30

    mybatis 延迟加载(懒加载)

    本文链接:https://blog.csdn.net/weixin_44580977/article/details/96484510 1.为什么要延迟加载?...因为只有在用户需要的时候再去查询数据库,可以大大提高数据库性能 2.什么是延迟加载? 就是在需要用到数据时才进行加载,不需要用到数据时就不加载数据。 3.延迟加载实现思路?...SQL语句: select * from account a left outer join user u on u.id = a.uid 延迟加载方式:如果先查询账户(Account)信息即可满足要...现在已经学会配置延迟加载了,明白什么是延迟加载了嘛?...不不明白,再看看下面的测试你可能就知道了, 什么是用到的时候去查数据库了,懒加载(延迟加载)的精髓 延迟加载效果 测试1 public class Account implements Serializable

    2.1K30

    Vue.js中的延迟加载和代码拆分

    延迟加载 那么当我们仍然需要添加新功能并改进我们的应用程序时,我们如何削减budle包大小?答案很简单 - 延迟加载和代码分割。 顾名思义,延迟加载是一个懒惰地加载应用程序的部分(块)的过程。...现在是时候看看我们如何在我们自己的Vue.js应用程序中使用延迟加载。 动态导入 我们可以使用webpack的动态导入,轻松地加载我们应用程序的某些部分。...延迟加载Vue components 现在我们知道延迟加载是什么,以及为什么需要它。现在是时候看看我们如何在Vue应用程序中使用它了。...在DOM中需要渲染组件之前,组件将不会加载。想要加载,只要v-if值更改为true即可。 总结 延迟加载,是使您的Web应用程序更高效并减少js bundle大小的最佳方法之一。...我们已经学习了如何使用Vue组件进行延迟加载。 在本系列的下一部分中,我将向您展示在任何Vue.js应用程序上获得显着性能提升的最有用(也是最快)的方法。

    7.8K10
    领券