全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📅 2026-05-16 5 分钟 ✍️ juanwangdev

CSS响应式图片

响应式图片根据屏幕尺寸、分辨率自动选择最合适的图片资源,优化加载性能。

CSS 方案

响应式尺寸

CSS
img {
  max-width: 100%;
  height: auto;
}

背景图片响应式

CSS
.hero {
  background-image: url('small.jpg');
  background-size: cover;
  background-position: center;
}

@media (min-width: 768px) {
  .hero {
    background-image: url('medium.jpg');
  }
}

@media (min-width: 1200px) {
  .hero {
    background-image: url('large.jpg');
  }
}

图片集

CSS
.hero {
  background-image: image-set(
    'small.jpg' 1x,
    'medium.jpg' 2x,
    'large.jpg' 3x
  );
}

HTML 方案

srcset 属性

HTML
<img
  src="small.jpg"
  srcset="small.jpg 400w, medium.jpg 800w, large.jpg 1200w"
  sizes="(max-width: 600px) 100vw, 50vw"
  alt="响应式图片"
>
属性说明
srcset图片候选列表(宽度描述符 w 或像素密度描述符 x)
sizes图片预期显示尺寸
src默认/后备图片

picture 元素

HTML
<picture>
  <!-- WebP 格式优先 -->
  <source type="image/webp" srcset="image.webp">
  <!-- 按宽度选择 -->
  <source media="(min-width: 800px)" srcset="large.jpg">
  <source media="(min-width: 400px)" srcset="medium.jpg">
  <!-- 后备图片 -->
  <img src="small.jpg" alt="响应式图片">
</picture>

像素密度适配

HTML
<img
  src="normal.jpg"
  srcset="normal.jpg 1x, retina.jpg 2x, super.jpg 3x"
  alt="高清图片"
>

art direction 场景

不同设备显示不同裁剪版本:

HTML
<picture>
  <!-- 移动端:竖版裁剪 -->
  <source
    media="(max-width: 767px)"
    srcset="mobile-crop.jpg"
  >
  <!-- 桌面端:横版完整图 -->
  <img src="desktop-full.jpg" alt="产品展示">
</picture>

注意:picture 元素内的 img 必须放在最后作为后备。

要点总结

  • CSS:max-width: 100% + height: auto 实现基础响应式
  • HTML:srcset + sizes 让浏览器选择最优资源
  • picture 元素支持格式选择和 art direction
  • 根据场景选择 CSS 或 HTML 方案

📝 发现内容有误?点击此处直接编辑

← 上一篇 CSS浮动
下一篇 → CSS媒体查询
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库