CSS: 响应式设计基础

最后更新:2026-10-13

响应式设计(Responsive Web Design,RWD)是一种让网页在不同设备(手机、平板、桌面)上都能提供良好浏览体验的设计方法。它的核心理念是"一次设计,处处适配"。

响应式基础属性速查表

属性/技术 常用值 作用
@media @media (max-width: 768px) { ... } 媒体查询(断点处改变布局)
max-width 1200px, 100% 最大宽度(容器自适应常用)
min-width 320px 最小宽度(防止过窄)
em 1em = 父元素 font-size 相对单位(相对于父元素字体)
rem 1rem = 根元素 font-size 相对单位(相对于根元素字体)
vw / vh 50vw, 100vh 视口百分比
% 50%, 100% 相对于父容器百分比
fr 1fr, 2fr Grid 中的份数单位
clamp() clamp(16px, 3vw, 32px) 值范围限制(最小/首选/最大)
min() / max() min(100%, 1200px) 取最小/最大值

本节涉及属性: max-width min-width background-image font-size

1. 三大核心要素

响应式设计基于三个核心技术:

  1. 弹性网格布局:使用相对单位(如 %、fr、vw、vh、rem)而非固定像素
✅ 单位选择指南: 字体用 rem(相对根元素),容器宽度用 % 或 fr,视口相关用 vw/vh。尽量避免用 px 做布局尺寸——固定像素在不同屏幕上的表现天差地别。

  1. 弹性图片/媒体:图片和视频能根据容器自动缩放
  2. 媒体查询:根据设备特征应用不同的 CSS 样式

2. 视口(Viewport)设置

在 HTML 的 <head> 中添加视口 meta 标签是响应式设计的第一步:

HTML
<meta name="viewport" content="width=device-width, initial-scale=1.0">

不加这个标签,手机浏览器会"假装"自己是桌面浏览器,然后缩放页面,导致文字小到看不清。


3. 媒体查询(Media Queries)

媒体查询让你根据设备特征(如屏幕宽度、分辨率等)应用不同的 CSS 样式。

(1) 基本语法

▶ 示例

▶ 试一试

(2) 常用断点

▶ 示例

▶ 试一试

(3) 移动优先 vs 桌面优先

移动优先(Mobile First)——先写手机样式,再用 min-width 逐步增强:

▶ 示例

▶ 试一试

桌面优先——先写桌面样式,再用 max-width 逐步缩小:

▶ 示例

▶ 试一试

一般推荐移动优先——因为移动端限制更多,先处理限制再逐步放开更容易。


4. 弹性单位

单位 说明 适用场景
% 相对父元素 宽度、定位
em 相对自身或父元素字体大小 间距、边距
rem 相对根元素(html)字体大小 字体、间距
vw 相对视口宽度 大标题、全屏布局
vh 相对视口高度 全屏区块
vmin vw和vh中较小的值 自适应正方形
vmax vw和vh中较大的值 特殊场景

(1) 用 rem 做响应式字体

▶ 示例

▶ 试一试

(2) 用 vw/vh 做全屏布局

▶ 示例

▶ 试一试

5. 弹性图片

▶ 示例

▶ 试一试

background-image 的响应式处理:

▶ 示例

▶ 试一试

本节涉及属性: max-width min-width background-image font-size

❓ 常见问题

Q 没有 viewport meta 标签会怎样?
A 移动端浏览器会用桌面宽度(通常 980px)渲染页面,然后缩小到手机屏幕大小。你会看到文字小到看不清,需要双指缩放才能阅读。所以 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 是响应式设计的前提。
Q 媒体查询的断点怎么选?
A 推荐先写手机端样式(mobile-first),然后用 min-width 逐步增强。常见断点参考:手机 < 576px,平板 768px,笔记本 992px,桌面 1200px。但不要被这些数字限制——根据你的实际内容决定断点。
Q 响应式设计一定要用 rem 吗?
A 不一定。rem 更适合字体大小,布局宽高用 %、fr、vw/vh 更合适。关键是不用固定 px 做布局尺寸。单位的选择取决于场景:字体用 rem,容器用 %,间距用 em 或 rem。

📖 小节

📌 必写标签: 没有 <meta name="viewport" content="width=device-width, initial-scale=1.0">,移动端就会用桌面宽度渲染页面,文字小到看不清。这个标签是所有响应式设计的前提。

📝 作业

  1. 创建一个页面,在桌面端显示三栏布局(三段平分),在平板上显示两栏布局,在手机上显示单栏布局(使用媒体查询实现)。
  2. 使用 rem 单位设置字体大小,然后在媒体查询中修改根元素 html 的 font-size,观察所有文字等比例缩放的效果。
  3. 创建一个响应式导航栏——桌面端水平展开,手机端隐藏(或变成汉堡菜单)。
  4. 设置图片的 max-width: 100%,然后调整浏览器窗口大小,观察图片自适应效果。
Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏