hand
_1_12_78
4
返回栏目
0k
3k
5k
1k
2k
0.2k
2k
1k
2k
3k
2k
3k
2k
3k
3k
0.3k
0k
2k
0k
1k
0.1k
0k
0k
2k
2k
3k
0.2k
3k
0k
2k
2k
2k
3k
2k
2k
0k
4k
2k
2k
0k
3k
3k
2k
2k
2k
1k
3k
1k
3k
2k
1k
0.8k
2k
0k
2k
2k
2k
2k
3k
0.4k
4k
2k
5k
2k
3k
2k
3k
3k
4k
2k
3k
2k
3k
0.7k
2k
0.8k
3k
2k
4k
2k
2k
2k
2k
2k
3k
3k
3k
3k
4k
3k
3k
0k
2k
2k
0k
3k
2k
3k
1k
2k
2k
3k
3k
3k
3k
5k
3k
3k
3k
4k
3k
5k
4k
4k
4k
4k
1k
2k
2k
2k
2k
2k
2k
1k
2k
3k
3k
3k
3k
3k
2k
3k
4k
2k
2k
3k
5k
3k
3k
3k
4k
3k
3k
2k
3k
5k
4k
3k
4k
4k
2k
3k
3k
1k
3k
4k
4k
2k
2k
2k
3k
2k
4k
2k
4k
2k
4k
1k
2k
1k
2k
2k
1k
2k
2k
2k
2k
2k
2k
1k
1k
4k
3k
2k
2k
3k
3k
6k
2k
8k
3k
7k
2k
3k
3k
4k
3k
5k
4k
3k
3k
2k
2k
3k
3k
2k
2k
2k
3k
2k
6k
4k
4k
4k
4k
3k
3k
2k
4k
2k
3k
3k
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
0k
返回前端 - HTML5栏目
作者:
贺及楼
成为作者
更新日期:2025-02-27 11:59:58
在当今多设备、多屏幕尺寸的时代,为网页提供响应式图片是至关重要的。响应式图片能够根据不同的设备屏幕大小、分辨率等因素,自动调整显示的图片,从而提供更好的用户体验和优化网站性能。本文将深入探讨如何使用 HTML5 中的 <img>
标签进行响应式图片处理。
在没有响应式图片处理之前,我们通常使用传统的 <img>
标签来插入图片,代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>传统 img 标签示例</title>
</head>
<body>
<img src="large-image.jpg" alt="示例图片">
</body>
</html>
这种方式的问题在于,无论用户使用的是大屏幕的电脑显示器还是小屏幕的手机,浏览器都会下载并显示同一张图片。对于小屏幕设备来说,下载大尺寸的图片会浪费用户的流量和带宽,同时也会增加页面的加载时间。
HTML5 为 <img>
标签引入了 srcset
属性,它允许我们为不同的设备提供不同分辨率的图片。srcset
属性的值是一个逗号分隔的列表,每个项目包含一个图片的 URL 和一个描述图片分辨率的宽度描述符(如 w
)或像素密度描述符(如 x
)。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>使用 srcset 属性(宽度描述符)</title>
</head>
<body>
<img src="medium-image.jpg"
srcset="small-image.jpg 480w, medium-image.jpg 800w, large-image.jpg 1200w"
alt="示例图片">
</body>
</html>
在这个例子中,src
属性指定了默认的图片,当浏览器不支持 srcset
属性时会显示这张图片。srcset
属性提供了三个不同宽度的图片选项,浏览器会根据设备的屏幕宽度和布局视口的大小,自动选择最合适的图片进行加载。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>使用 srcset 属性(像素密度描述符)</title>
</head>
<body>
<img src="1x-image.jpg"
srcset="1x-image.jpg 1x, 2x-image.jpg 2x, 3x-image.jpg 3x"
alt="示例图片">
</body>
</html>
这里的 1x
、2x
和 3x
分别表示图片的像素密度。例如,2x
图片的分辨率是 1x
图片的两倍,适用于高分辨率的设备。浏览器会根据设备的像素密度自动选择合适的图片。
sizes
属性可以与 srcset
属性结合使用,提供更精确的图片选择规则。sizes
属性的值是一个逗号分隔的列表,每个项目包含一个媒体查询和一个宽度描述符。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>使用 sizes 属性</title>
</head>
<body>
<img src="medium-image.jpg"
srcset="small-image.jpg 480w, medium-image.jpg 800w, large-image.jpg 1200w"
sizes="(max-width: 480px) 100vw, (max-width: 800px) 50vw, 33vw"
alt="示例图片">
</body>
</html>
在这个例子中,sizes
属性定义了三个媒体查询和对应的宽度描述符:
100vw
)。50vw
)。33vw
)。浏览器会根据当前设备的屏幕宽度和 sizes
属性的规则,结合 srcset
属性中的图片选项,选择最合适的图片进行加载。
属性 | 作用 | 示例 |
---|---|---|
src |
指定默认的图片,当浏览器不支持 srcset 时显示 |
<img src="medium-image.jpg" alt="示例图片"> |
srcset |
提供不同分辨率的图片选项,让浏览器根据设备情况选择合适的图片 | <img srcset="small-image.jpg 480w, medium-image.jpg 800w, large-image.jpg 1200w"> |
sizes |
与 srcset 结合使用,提供更精确的图片选择规则 |
<img sizes="(max-width: 480px) 100vw, (max-width: 800px) 50vw, 33vw"> |
通过合理使用 <img>
标签的 srcset
和 sizes
属性,我们可以实现高效的响应式图片处理,为不同设备的用户提供更好的图片显示效果和更快的页面加载速度。
前端 - HTML5
整章节共240节
快分享给你的小伙伴吧 ~