HTML图片通过标签嵌入,src指定路径,支持JPEG/PNG/GIF等格式,alt提供替代文本,路径可相对或绝对,保障显示
HTML图片基础标签与属性
<img>
标签核心属性
属性 | 功能描述 |
src | 指定图片路径(必填),支持相对路径/绝对路径/URL |
alt | 替代文本,用于图片无法显示时的说明(SEO和无障碍必需) |
width | 定义图片宽度(建议使用CSS控制,避免布局抖动) |
height | 定义图片高度(同上,优先使用CSS) |
loading | 控制加载行为(lazy 延迟加载,eager 立即加载) |
decoding | 指定解码方式(auto /async /sync ,影响渲染性能) |
图片格式支持
格式 | 特点 |
JPG/JPEG | 有损压缩,适合照片,24位真彩色 |
PNG | 无损压缩,支持透明背景,索引色模式体积小 |
GIF | 支持动画,256色限制,适合简单图形 |
SVG | 矢量图形,无限缩放,适合图标和简单插画 |
WebP | 谷歌推出,压缩率更高,支持透明度和动画(需浏览器兼容检查) |
响应式图片解决方案
<picture>
元素结构
<picture>
<source media="(min-width: 800px)" srcset="image-large.jpg">
<source media="(max-width: 799px)" srcset="image-small.jpg">
<img src="image-default.jpg" alt="示例图片">
</picture>
srcset
高级用法
语法 | 功能说明 |
image.jpg 1x | 标准清晰度(1倍像素密度) |
image@2x.jpg 2x | 视网膜屏优化(2倍像素密度) |
image-small.jpg 300w | 指定宽度300px时使用(配合sizes 属性) |
图片优化技术
懒加载实现
<img src="placeholder.jpg" data-src="real-image.jpg" alt="内容描述">
<script>
document.addEventListener('DOMContentLoaded', () => {
const lazyImages = document.querySelectorAll('[data-src]');
const observer = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
const img = entry.target;
img.src = img.dataset.src;
observer.unobserve(img);
}
});
});
lazyImages.forEach(img => observer.observe(img));
});
</script>
现代图片格式应用
场景 | 推荐格式 | 注意事项 |
普通网页图片 | WebP | 需提供JPG/PNG备选方案 |
透明背景需求 | AVIF | 浏览器支持有限(Chrome 72+/Firefox 63+) |
动画效果 | APNG/WebP | APNG支持度较差,优先WebP动画 |
图标/简单图形 | SVG | 配合<object> 或<img> 使用,注意IE不支持 |
无障碍与语义化
必要辅助属性
属性 | 作用 |
alt | 必须提供文字描述,空图片用alt="" |
role | 定义为img 时增强屏幕阅读器识别(<img role="img" alt="..."> ) |
longdesc | 指向图片详细描述页面(已废弃,建议用aria-describedby ) |
ARIA扩展属性
<img src="chart.png" alt="年度销售图表" aria-label="显示2023年各季度销售额对比"
aria-describedby="chart-description">
<div id="chart-description" class="visually-hidden">
柱状图展示Q1-Q4收入增长,红色代表线上渠道,蓝色为线下渠道
</div>
常见问题与解决方案
Q1:如何优化移动端图片加载?
A1:

- 使用
<picture>
结合srcset
提供不同分辨率资源 - 启用
loading="lazy"
实现按需加载 - 采用WebP/AVIF等现代格式减小文件体积
- 设置
image-rendering: -webkit-optimize-contrast
提升低分辨率设备显示效果
Q2:如何处理多语言网站的alt文本?
A2:
- 通过JavaScript动态替换
alt
属性(需考虑SEO影响) - 使用
data-alt-{lang}
自定义属性存储多语言文本 - 利用
<track>
字幕文件同步多语言描述(视频类内容) - 在服务器端根据语言环境生成