当前位置:首页 > jquery

jquery 懒加载

2026-04-08 11:06:57jquery

jQuery 懒加载实现方法

懒加载(Lazy Load)是一种优化网页性能的技术,延迟加载图片或其他资源,直到用户滚动到它们附近时才加载。以下是使用 jQuery 实现懒加载的几种方法。

使用 jQuery Lazy 插件

jQuery Lazy 是一个轻量级的懒加载插件,支持图片、背景图等多种资源的延迟加载。

  1. 引入 jQuery 和 jQuery Lazy 插件

    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/jquery-lazy@1.7.11/jquery.lazy.min.js"></script>
  2. 初始化懒加载

    $(function() {
     $('.lazy').Lazy();
    });
  3. HTML 标记

    jquery 懒加载

    <img class="lazy" data-src="path/to/image.jpg" alt="Lazy loaded image">

自定义 jQuery 懒加载

如果不使用插件,可以通过监听滚动事件实现懒加载。

  1. HTML 标记

    <img class="lazy" data-src="path/to/image.jpg" alt="Lazy loaded image">
  2. jQuery 代码

    jquery 懒加载

    $(document).ready(function() {
     $(window).on('scroll', function() {
         $('.lazy').each(function() {
             if ($(this).offset().top < $(window).scrollTop() + $(window).height()) {
                 $(this).attr('src', $(this).data('src'));
                 $(this).removeClass('lazy');
             }
         });
     }).trigger('scroll');
    });

使用 Intersection Observer API

Intersection Observer API 是现代浏览器提供的更高效的懒加载方案,配合 jQuery 使用。

  1. HTML 标记

    <img class="lazy" data-src="path/to/image.jpg" alt="Lazy loaded image">
  2. jQuery 代码

    $(document).ready(function() {
     if ('IntersectionObserver' in window) {
         const lazyImages = $('.lazy');
         const imageObserver = new IntersectionObserver(function(entries, observer) {
             entries.forEach(function(entry) {
                 if (entry.isIntersecting) {
                     const lazyImage = $(entry.target);
                     lazyImage.attr('src', lazyImage.data('src'));
                     lazyImage.removeClass('lazy');
                     imageObserver.unobserve(entry.target);
                 }
             });
         });
    
         lazyImages.each(function() {
             imageObserver.observe(this);
         });
     } else {
         // Fallback for older browsers
         $(window).on('scroll', function() {
             $('.lazy').each(function() {
                 if ($(this).offset().top < $(window).scrollTop() + $(window).height()) {
                     $(this).attr('src', $(this).data('src'));
                     $(this).removeClass('lazy');
                 }
             });
         }).trigger('scroll');
     }
    });

优化建议

  • 添加占位符图片或背景色,避免布局抖动。
  • 设置适当的阈值(threshold),提前加载图片。
  • 对移动端和桌面端分别优化触发条件。
  • 考虑使用 loading="lazy" 原生属性作为备用方案。

以上方法可根据项目需求选择,插件方案适合快速实现,自定义方案更灵活,Intersection Observer API 性能最佳。

标签: 加载jquery
分享给朋友:

相关文章

jquery插件

jquery插件

jQuery 插件开发指南 jQuery 插件是一种扩展 jQuery 功能的模块化方式,允许开发者封装可重用的代码。以下是开发和使用 jQuery 插件的基本方法。 插件基本结构 jQuery 插…

jquery 选择

jquery 选择

jQuery 选择器基础 jQuery 选择器基于 CSS 选择器语法,用于快速定位和操作 DOM 元素。核心语法为 $() 或 jQuery(),括号内传入选择器表达式。 // 选择所有 <…

jquery隐藏

jquery隐藏

jQuery 隐藏元素的方法 使用 jQuery 隐藏元素可以通过多种方式实现,以下是几种常见的方法: hide() 方法hide() 是最简单的隐藏元素方法,它会将元素的 display 属性设置…

jquery菜单

jquery菜单

以下是关于使用jQuery创建交互式菜单的几种常见方法及实现示例: 基础下拉菜单实现 通过jQuery的slideToggle和toggleClass实现简单下拉效果: $('.menu-item…

jquery a

jquery a

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,用于简化 HTML 文档遍历、事件处理、动画和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够更…

vue加载动画实现

vue加载动画实现

Vue 加载动画实现方法 使用 CSS 动画或过渡 在 Vue 组件中可以直接通过 CSS 实现加载动画效果。定义一个简单的旋转动画: .loading-spinner { width: 40p…