核心是使用srcset和sizes属性或<picture>元素实现响应式图片。srcset提供不同尺寸或格式的图片源,sizes根据视口宽度定义图片显示尺寸,浏览器据此选择最佳资源,避免流量浪费和模糊问题。传统<img>仅靠src无法适配多设备,而max-width: 100%只解决视觉缩放,不减少加载体积。srcset与sizes协同工作:sizes计算图片在当前布局的显示宽度,srcset按宽度或像素密度提供候选,浏览器结合DPR、网络状况等选择最优图片。例如视口375px且DPR=2时,需750px有效像素,浏览器从srcset中选最接近的800w图片。当需不同构图(如移动端特写)或支持现代格式(如WebP、AVIF)时,<picture>更适用,其<source>可设媒体查询或类型,实现艺术方向与格式降级。总之,<img>+srcset/sizes适用于分辨率适配,<picture>适用于内容裁剪与格式控制。

在HTML中设置图片响应式,核心在于让浏览器根据用户设备的屏幕尺寸、分辨率和网络状况,自动选择加载最合适的图片资源。这通常通过
<img>
srcset
sizes
<picture>
要实现图片响应式,最常用也最推荐的方法是结合使用
<img>
srcset
sizes
srcset
sizes
例如,一个基本的
srcset
<img srcset="image-small.jpg 480w,
image-medium.jpg 800w,
image-large.jpg 1200w"
sizes="(max-width: 600px) 100vw,
(max-width: 1200px) 50vw,
800px"
src="image-fallback.jpg"
alt="响应式图片示例">这里,
srcset
sizes
立即学习“前端免费学习笔记(深入)”;
100vw
50vw
浏览器会根据
sizes
srcset
src
srcset
<img>
我记得刚开始做网页的时候,图片处理真是个头疼的问题。一张图,PC上看着挺好,手机上一缩就模糊,或者加载半天。那时候大家就用
max-width: 100%; height: auto;
传统的
<img>
src
src
<img>
所以,
max-width: 100%
srcset
sizes
srcset
sizes
理解
srcset
sizes
srcset
w
image-small.jpg 480w
image-small.jpg
x
image@2x.jpg 2x
image@2x.jpg
srcset
sizes
sizes
<img>
(max-width: 600px) 100vw, (max-width: 1200px) 50vw, 800px
100vw
50vw
800px
sizes
协同工作流程:
sizes
sizes
srcset
srcset
举个例子,假设你的设备是DPR为2的手机,视口宽度是375px,
sizes
100vw
375 * 2 = 750
srcset
image-medium.jpg 800w
image-small.jpg 480w
image-large.jpg 1200w
image-large.jpg 1200w
image-small.jpg 480w
所以,
sizes
srcset
srcset
w
sizes
sizes="100vw"
<picture>
<img>
srcset
虽然
<img>
srcset
sizes
<picture>
1. 艺术方向 (Art Direction)
这是
<picture>
<picture>
举个例子,你可能有一张风景横幅图,在桌面端它看起来很宏伟。但到了手机上,如果只是简单地缩小,可能就看不清重点了。这时候,你可能希望在手机上展示这张图的某个局部特写,或者完全不同的竖版构图。
srcset
<picture> <source media="(min-width: 900px)" srcset="landscape-full.jpg"> <source media="(min-width: 600px)" srcset="landscape-cropped-mid.jpg"> <img src="landscape-mobile-focus.jpg" alt="风景图"> </picture>
在这个例子中:
landscape-full.jpg
landscape-cropped-mid.jpg
<picture>
landscape-mobile-focus.jpg
这样,你就能根据不同的屏幕尺寸,为用户提供最合适的视觉内容,而不是简单地缩放。
2. 格式兼容性 (Format Support)
随着WebP、AVIF等更高效的图片格式的出现,我们希望在支持这些格式的浏览器上优先使用它们,以获得更小的文件体积和更快的加载速度,同时又能为不支持的浏览器提供传统的JPEG或PNG格式作为回退。
<picture>
<source type="...">
<picture> <source srcset="image.avif" type="image/avif"> <source srcset="image.webp" type="image/webp"> <img src="image.jpg" alt="示例图片"> </picture>
浏览器会从上到下检查
<source>
image/avif
image.avif
image/webp
<source>
<img src="image.jpg">
总结来说,当你需要对图片进行内容或构图上的调整(艺术方向),或者需要根据浏览器对图片格式的支持情况提供不同文件时,
<picture>
<img>
srcset
以上就是HTML如何设置图片响应式?img的srcset属性怎么用?的详细内容,更多请关注php中文网其它相关文章!
HTML怎么学习?HTML怎么入门?HTML在哪学?HTML怎么学才快?不用担心,这里为大家提供了HTML速学教程(入门课程),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号