4-2 如何延迟加载图片

本文详细介绍了如何通过浏览器级别的延迟加载、Intersection Observer和事件处理程序来实现图片延迟加载,以优化网页性能。内容包括内嵌图像的延迟加载方法,如使用`loading="lazy"`属性,结合Intersection Observer实现兼容性,以及针对不支持Intersection Observer的浏览器使用事件处理程序。文章还提到了CSS中的图像延迟加载策略和一些延迟加载库的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

由于在 HTML 中作为元素或 CSS 背景图像内联,图像可以出现在网页上。在这篇文章中,您将了解如何延迟加载这两种类型的图像。

内嵌图像

最常见的延迟加载候选是元素中使用的图像。对于内嵌图像,我们有三个延迟加载选项,可以组合使用以实现跨浏览器的最佳兼容性:

  • 使用浏览器级延迟加载
  • 使用交叉点观察器
  • 使用滚动和调整大小事件处理程序

使用浏览器级别的延迟加载

Chrome 和 Firefox 都支持带有loading属性的延迟加载。此属性可以添加到元素,也可以添加到元素。值lazy告诉浏览器如果图像在视口中则立即加载图像,并在用户滚动到其他图像附近时获取其他图像。

### 如何优化 `vue-pdf-app` 的延迟加载性能 #### 使用 Webpack 动态导入实现按需加载 PDF 组件 为了提高应用的初始加载速度并改善用户体验,在 Vue.js 应用程序中可以采用懒加载的方式引入第三方库,比如 pdf.js 或者其他用于显示 PDF 文档的相关插件。对于 `vue-pdf-app` 这样的组件来说,可以通过动态 import() 来实现其异步加载。 ```javascript // 路由配置文件 router/index.js 中定义路径对应的组件时使用函数形式返回 Promise 对象来代替直接指定组件对象 { path: '/pdf-viewer', name: 'PdfViewer', component: () => import(/* webpackChunkName: "pdf-viewer" */ '@/components/PdfViewer.vue') } ``` 当用户导航到 `/pdf-viewer` 页面时才会触发该模块的实际下载过程[^1]。 #### 配置 Webpack 提取公共代码减少重复体积 如果多个地方都依赖于同一个版本的 pdf.js,则应该考虑将其作为 vendor chunk 单独打包出来以便共享缓存: 编辑项目的根目录下的 `vue.config.js` 文件(如果没有则创建),加入如下配置项以分离 vendors chunks: ```javascript module.exports = { configureWebpack: { optimization: { splitChunks: { cacheGroups: { commons: { test: /[\\/]node_modules[\\/]/, name: 'vendors', chunks: 'all' } } } } } }; ``` 这会使得所有来自 node_modules 的包都被提取成单独的一个 js 文件[vendors.js], 减少每次请求不必要的数据传输量的同时也提高了浏览器端的缓存利用率[^2]. #### 加载前展示占位符或预览图 考虑到大型 PDF 文件可能需要较长时间才能完成渲染,可以在实际内容准备就绪之前先给出一些视觉反馈给访问者知道正在发生什么。例如,可以用简单的灰色矩形框模拟文档外观尺寸;或者是提前准备好一张缩略版封面图片放在那里等待替换为真实的第一页扫描图像。 ```html <div v-if="loading"> <!-- 显示 loading spinner --> </div> <img :src="thumbnailUrl" alt="PDF Preview Thumbnail"/> <vue-pdf-app ref="pdfApp"></vue-pdf-app> ``` 结合以上方法能够有效降低首屏渲染时间,并让用户感受到更流畅的操作体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

紫微前端

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值