前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版
首页程序员面试题库CSS background-image responsive image media query
CSS响应式设计

背景图怎样做响应式,为什么不能总用它代替 img?

装饰性图片可以用 background-image 随断点更换,并配合 background-size: cover 裁切。传达内容的图片应优先用 <img> 或 <picture>,因为背景图没有 alt,也不参与文档语义。

前端进阶之旅 · 一题精讲更新于 2026.09.29
CSS#响应式设计
先看核心答案读代码示例
理解线索

先判断图片是否承载信息

  1. background-image以 CSS 图层形式绘制装饰资源
  2. background-size: cover铺满区域,必要时裁掉边缘
  3. <picture>为内容图提供格式或媒体条件候选

背景图本身不撑起容器高度,容器必须有内容、尺寸或宽高比。

核心回答

先记住这个答案

响应式背景图通常通过媒体查询更换素材,并用 background-size 和 background-position 控制裁切;同一构图的不同像素密度版本可考虑 image-set()。但背景图是 CSS 装饰层,不带替代文本,也不会给容器提供固有尺寸。商品照片、文章配图、图表等承载信息的图片应使用 <img> 或 <picture>,由 srcset、sizes 等机制选择资源。

  • 背景图适合纯装饰素材
  • 媒体查询可在断点切换图片
  • image-set() 可选择像素密度
  • 内容图优先用 <img> 或 <picture>

横幅装饰图按版式切换

桌面横幅很宽,手机版更窄。如果只把桌面大图 cover 到手机容器,人物可能被裁掉;这时适合在断点切换另一张构图。图片是装饰时,标题和按钮仍应作为真实 HTML 放在背景上方。

手机改用竖向构图CSS
.hero { min-height: 320px; background: center / cover url('/hero-wide.webp'); }
@media (max-width: 640px) {
  .hero { min-height: 420px; background-image: url('/hero-tall.webp'); }
}

这里断点解决的是构图问题,不是单纯追求某种设备宽度。cover 保持比例并填满容器,边缘可能被裁掉;重要文字不能烘焙在图片里,否则裁切后可能读不到。 背景图需要容器自身有高度。若横幅里没有足够内容,可用 min-height 或 aspect-ratio 保留空间,避免图片下载前区域坍缩。

内容图片交给 HTML

商品封面是用户理解商品的必要信息,用背景图会失去自然的 alt 描述。浏览器也不能像 <img> 那样直接利用 srcset、sizes 和宽高属性做资源选择与布局占位。

同一页面可以混用:装饰纹理做背景,商品图用 <img>。如果需要按画面宽度或格式提供不同文件,<picture> 更适合;如果只是高密度屏资源选择,srcset 的密度描述符更直接。

资源加载也要分清。CSS 背景写在样式规则中,浏览器只有在规则应用、元素需要绘制时才会请求它;内容图片则能借助 HTML 标记、loading 和响应式候选参与页面加载策略。首屏主视觉若确实是关键内容,不应只因为做成背景容易裁切,就失去替代文本和明确的宽高占位。把装饰与信息分清,后续再决定裁切和资源选择方式。

回答前,多想一步

容易答错的地方

给承载信息的图只写背景
背景图没有与图片对应的替代文本。图表、商品照片等内容应在 HTML 中有可访问的表达。
以为 cover 会完整显示图片
cover 保证铺满区域,可能裁剪四周;完整显示应考虑 contain,但会出现留白。
试着用自己的话回答

面试官还会怎么问?

背景图能针对高 DPR 选择资源吗?

可用 CSS 的 image-set() 提供不同密度候选,但仍不解决内容图的语义和尺寸占位问题。

用媒体查询切图还是用 srcset?

构图和布局变化用媒体条件更合适;同一内容图按显示尺寸选择分辨率,优先用 <img> 的 srcset 与 sizes。

背景图加载失败会怎样?

容器与 HTML 内容仍在,但装饰消失。要保证前景文字在背景缺失时仍有足够对比度。

从一道题,走向一组知识

把知识连起来

响应式设计

响应式断点为什么不能直接照搬 768px 和 1024px?

断点应在图片裁切与排版实际失效时选择。

响应式设计

container-name 怎么避免组件查错容器?

容器查询可让装饰图随组件宽度变化,而不只看视口。

参考资料

  • CSS:响应式设计参考资料

示例用于理解所注明的运行环境与边界;延伸学习可结合原文中的更多案例。

本题目录
  1. 先记住这个答案
  2. 横幅装饰图按版式切换
  3. 内容图片交给 HTML
  4. 容易答错的地方
  5. 面试官还会怎么问
  6. 把知识连起来
读懂,再试着讲出来

先看核心答案,再读代码。最后展开追问,检查自己有没有遗漏边界。

试着回答追问
浏览全部面试题理解原理,也关注真实的使用场景。回到顶部 ↑