J*aScript中如何实现页面懒加载_IntersectionObserver


IntersectionObserver 实现页面懒加载最轻量高效,无需监听 scroll/resize,浏览器原生支持;核心三步:创建观察器、配置 threshold/rootMargin、调用 observe,加载后及时 unobserve。

javascript中如何实现页面懒加载_intersectionobserver

页面懒加载用 IntersectionObserver 实现最轻量、性能最好,不用监听 scroll 或 resize,浏览器原生支持,兼容性已覆盖主流现代浏览器(Chrome 51+、Firefox 55+、Safari 12.1+、Edge 79+)。

基本用法:监听元素是否进入视口

创建观察器实例,传入回调函数和配置项,再调用 observe() 开始监听目标元素:

const observer = new IntersectionObserver((entries) => {
  entries.forEach(entry => {
    if (entry.isIntersecting) {
      // 元素进入视口,执行加载逻辑(如图片 src、组件渲染等)
      const img = entry.target;
      img.src = img.dataset.src; // 加载真实图片
      observer.unobserve(img); // 加载完即停止观察,避免重复触发
    }
  });
}, {
  threshold: 0.1 // 当 10% 可见时就触发回调
});

// 观察所有带 data-src 的图片
document.querySelectorAll('img[data-src]').forEach(img => observer.observe(img));

常用配置项说明

threshold:触发回调的可见比例阈值,可为单个数字(如 00.5)或数组(如 [0, 0.25, 0.5, 0.75, 1]),值越小越早触发;

root:指定滚动容器(默认是浏览器视口),比如设为某个 div 元素,就以该容器为“视口”来判断是否相交;

rootMargin:类似 CSS 的 margin,用于扩大或缩小判定区域,例如 '50px 0px' 表示提前 50px 开始加载(上边距 +50px,触发更早);

php中级教程之ajax技术 php中级教程之ajax技术

AJAX即“Asynchronous J*ascript And XML”(异步J*aScript和XML),是指一种创建交互式网页应用的网页开发技术。它不是新的编程语言,而是一种使用现有标准的新方法,最大的优点是在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容,不需要任何浏览器插件,但需要用户允许J*aScript在浏览器上执行。《php中级教程之ajax技术》带你快速

php中级教程之ajax技术 2114 查看详情 php中级教程之ajax技术

trackVisibilitydelay:高级选项,仅在部分浏览器支持,一般不需要手动设置。

实用技巧与注意事项

  • 加载完成后及时调用 unobserve(el),避免反复执行;若需复用(如列表滚动中反复进出),可不取消,但要在回调里加状态判断(如 if (el.loaded) return);
  • 图片加载失败时建议 fallback 处理,比如显示占位图或错误提示;
  • 服务端渲染(SSR)场景下,注意只在客户端初始化 IntersectionObserver,避免 Node 环境报错;
  • 旧浏览器不支持时,可用 polyfill(如 w3c 官方 polyfill),或退化为 scroll 监听(慎用,注意节流)。

封装一个可复用的懒加载 Hook(类 React 场景)

简单封装便于组件内调用:

function useLazyLoad(callback) {
  const observerRef = useRef(null);

  useEffect(() => {
    observerRef.current = new IntersectionObserver(
      (entries) => entries.forEach(e => e.isIntersecting && callback(e.target)),
      { threshold: 0.05 }
    );

    return () => observerRef.current?.disconnect();
  }, []);

  return (node) => {
    if (node && observerRef.current) {
      observerRef.current.observe(node);
    }
  };
}

// 在组件中使用
function LazyImage({ src, placeholder }) {
  const ref = useLazyLoad((el) => {
    el.src = src;
  });

  return @@##@@;
}

基本上就这些。核心就三步:创建 observer、设定阈值、observe 目标——不复杂但容易忽略 unobserve 和 rootMargin 的灵活运用。

以上就是J*aScript中如何实现页面懒加载_IntersectionObserver的详细内容,更多请关注其它相关文章!


# 里加  # 高坪区推广网站  # 上海普陀桃浦网站建设  # 河南建设网站推荐  # 福州网站建设办理流程  # 闵行网站建设优化企业  # 宁波网站建设方案范文  # 地矿局网站建设方案  # 长沙县移动营销推广中心  # 安徽营销推广哪家好做些  # 如何写一个手机网站推广  # 是指  # 不需要  # 是在  # 最轻  # 复用  # 懒加载  # 三步  # 如何实现  # 回调  # 加载  # 组件渲染  # safari  # 回调函数  # edge  # 浏览器  # node  # java  # javascript  # react  # css 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894


相关推荐: win11怎么设置默认终端为Windows Terminal Win11替代CMD和PowerShell【技巧】  解决CSS容器溢出问题:使用calc()实现精确布局与边距控制  创客贴登录页面入口 创客贴网页版最新网址链接  12306夜间购票失败? | 查看官方公布的暂停服务公告与应对方案  Win10怎么设置快速启动 Win10开启快速启动设置方法  如何编写一个符合 composer 规范的 post-install-cmd 脚本?  Lar*el Dusk 测试中管理浏览器权限:以剪贴板访问为例  C++如何实现矩阵乘法_C++二维数组矩阵运算代码示例  C++中的explicit关键字有什么作用_C++类型转换控制与explicit使用  b站怎么用微信登录_b站微信登录方法  智学网app怎么登录忘记密码_智学网app忘记密码找回与重新登录操作方法  学习通网页版课程打不开_课程无法访问时的解决方法  《王者荣耀世界》英雄获取攻略  路由器DNS怎么设置最快 优化DNS提升上网速度教程  抖音小程序怎么开通?小程序开通条件是什么?  OpenWeatherMap API:通过城市名称获取天气预报数据指南  yy漫画官方网站登录入口_yy漫画在线阅读页面地址  Flash AS3.0简易相册制作  《荔枝fm》导出文件教程  win11资源管理器标签页怎么用 Win11文件管理器多标签高效操作【新功能】  Lar*el如何创建自定义的辅助函数(Helpers)_Lar*el全局函数定义与加载方法  VB表达式书写规则解析  b站如何管理订阅_b站订阅标签分类管理  优化长HTML属性值:SonarQube警告与实用策略  AO3官方镜像链接 | 最新防走失网址永久收藏  DeepSeek超全面指南:入门必看  在Spring Boot Thymeleaf中利用布尔属性实现容器的条件显示  使用TinyButStrong生成HTML并结合Dompdf创建PDF教程  Win11便笺在哪打开 Win11桌面便笺(Sticky Notes)使用方法【详解】  三星M34录音变声问题_Samsung M34麦克风调整  抖音火山版如何进行提现  第五人格PC版怎么避免被封号_第五人格PC版防封号注意事项  《崩坏:星穹铁道》3.6版本异相仲裁打法及配队推荐  realme 10 Pro息屏方案_realme 10 Pro省电策略  12306APP选座怎么选充电位置_12306APP带充电插座座位选择方法与技巧  word页码灰色不能用如何解决  如何查询个人病历记录  PHP中获取HTTP响应状态消息:方法与限制  雨课堂官网在线登录 网页版雨课堂登录链接  《微信》视频号原创声明开启方法  Yandex浏览器官方入口_Yandex搜索引擎中文版  如何修改Windows截图的默认保存位置_告别C盘让桌面更整洁【教程】  oppo手机如何通过下拉通知栏截图_oppo手机通知栏快捷截图方法  OPPO A3 WiFi频繁断开怎么办 OPPO A3网络优化技巧  在PySimpleGUI中实现键盘按键绑定按钮事件  《长生:天机降世》火塔小怪大全  利用Flexbox实现图片元素的二维布局:2x2网格排列指南  Google Drive API 认证:服务账户与OAuth 2.0的选择与实践  《画加》约稿流程  微星主板BIOS怎么调整内存时序_内存参数手动优化BIOS设置教程 

 2025-12-05

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.