JavaScript中图片的加载时机主要取决于以下场景和优化策略:
1. HTML中的静态图片加载
- 浏览器解析HTML时,遇到<img>标签会立即发起请求,按文档顺序逐个下载。
- 图片加载期间,浏览器会为每个占位符保留空间,但实际内容需等待下载完成才能显示。
2. CSS背景图片加载
- 通过background-image属性引用的图片,需等待CSS文件解析完成后才会触发下载。
- 若CSS通过@import或外链引入,可能进一步延迟图片加载时机。
3. JavaScript动态加载图片
- new Image()对象:通过JavaScript创建Image实例并指定src属性时,图片会立即异步加载(不阻塞页面渲染)。
- 动态插入DOM:若通过JS将<img>标签插入DOM,其行为与静态HTML类似,但加载时机可控(如事件触发后加载)。
4. 加载优化策略
- 延迟加载(Lazy Load):仅在图片进入视口(或接近视口)时加载,减少初始请求量。
- 预加载(Preload):通过<link rel="preload">或JS提前请求关键图片,加速展示。
- 压缩与格式选择:使用WebP、AVIF等现代格式,或通过工具(如TinyPNG)压缩文件,减少传输时间。
关键注意事项
- 浏览器对同一域名的并发请求数有限制(通常6个),大量图片需分域或合并(如雪碧图)。
- 动态加载的图片需监听onload事件,避免操作未加载完成的DOM。
通过合理选择加载方式与优化策略,可显著提升页面性能与用户体验。