首页 / CSS 入门教程 / 响应式设计基础

CSS 入门教程

响应式设计基础

本教程共 44 篇 · 第 40 篇 · 更新于 2026-07-29 · 约 12 分钟阅读

响应式设计媒体查询viewport移动优先RWD

40. 响应式设计基础

本节目标:理解响应式设计的核心概念,掌握 viewport 设置和媒体查询语法,能够实现基础的屏幕适配。

响应式 Web 设计(RWD)让网页在不同尺寸的屏幕上都能良好展示。核心思路:不固定宽度,让布局根据屏幕自动调整。

viewport:视口

移动端浏览器默认会把页面缩放到一个较宽的虚拟视口(通常 980px),然后再缩小显示。这导致文字很小,需要手动缩放。

在 HTML 的 <head> 中添加这行代码,就能让视口宽度等于设备宽度:

<meta name="viewport" content="width=device-width, initial-scale=1.0">
属性含义
width=device-width视口宽度等于设备屏幕宽度
initial-scale=1.0初始缩放比例为 1(不缩放)
maximum-scale=1.0禁止用户缩放(可选,通常不建议)
user-scalable=no禁止用户缩放(可选,通常不建议)

所有响应式页面都必须有 viewport meta 标签。没有它,媒体查询在移动端不会按预期工作。

媒体查询语法

媒体查询(Media Query)是响应式的核心技术。它根据设备特性应用不同的 CSS。

@media 媒体类型 and (特性) {
  /* 满足条件时应用的 CSS */
}
/* 屏幕宽度小于等于 768px 时应用 */
@media screen and (max-width: 768px) {
  .container {
    width: 100%;
  }
}
<!DOCTYPE html>
<html lang="zh">
<head>
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <style>
    body {
      margin: 0;
      padding: 20px;
      background: #3498DB;
      color: white;
      font-size: 20px;
      text-align: center;
    }
    @media screen and (max-width: 600px) {
      body {
        background: #E74C3C;
      }
    }
  </style>
</head>
<body>
  <p>调整浏览器窗口大小查看效果</p>
</body>
</html>

媒体类型

类型说明
all所有设备(默认)
screen电脑、手机、平板屏幕
print打印模式
speech屏幕阅读器

实际开发中主要用 screen,也可以省略不写(默认就是 all)。

常用特性

特性说明
min-width视口宽度 >= 该值时生效
max-width视口宽度 <= 该值时生效
min-height视口高度 >= 该值时生效
max-height视口高度 <= 该值时生效
orientation: portrait竖屏
orientation: landscape横屏
/* 横屏时 */
@media (orientation: landscape) {
  .hero { flex-direction: row; }
}

/* 竖屏时 */
@media (orientation: portrait) {
  .hero { flex-direction: column; }
}

断点:最常用的屏幕尺寸

断点(breakpoint)是媒体查询生效的临界值。没有绝对标准,但常用的有:

/* 超小设备(手机竖屏) */
@media (max-width: 575px) { ... }

/* 小设备(手机横屏) */
@media (min-width: 576px) and (max-width: 767px) { ... }

/* 中等设备(平板) */
@media (min-width: 768px) and (max-width: 991px) { ... }

/* 大设备(笔记本) */
@media (min-width: 992px) and (max-width: 1199px) { ... }

/* 超大设备(台式机) */
@media (min-width: 1200px) { ... }

现代开发更推荐”移动优先”策略:先写手机样式,再用

逐步增强到大屏。

移动优先 vs 桌面优先

桌面优先(max-width):

/* 默认:桌面样式 */
.container { width: 1200px; }

/* 平板 */
@media (max-width: 991px) {
  .container { width: 100%; }
}

/* 手机 */
@media (max-width: 767px) {
  .container { padding: 10px; }
}

移动优先(min-width):

/* 默认:手机样式 */
.container { width: 100%; padding: 10px; }

/* 平板 */
@media (min-width: 768px) {
  .container { width: 750px; padding: 0; }
}

/* 桌面 */
@media (min-width: 992px) {
  .container { width: 970px; }
}

/* 大屏 */
@media (min-width: 1200px) {
  .container { width: 1170px; }
}
<!DOCTYPE html>
<html lang="zh">
<head>
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <style>
    /* 移动优先:默认是单列 */
    .grid {
      display: grid;
      grid-template-columns: 1fr;
      gap: 16px;
      padding: 16px;
    }
    .card {
      padding: 20px;
      background: #3498DB;
      color: white;
      border-radius: 8px;
    }

    /* 平板:两列 */
    @media (min-width: 768px) {
      .grid { grid-template-columns: repeat(2, 1fr); }
    }

    /* 桌面:三列 */
    @media (min-width: 992px) {
      .grid { grid-template-columns: repeat(3, 1fr); }
    }
  </style>
</head>
<body>
  <div class="grid">
    <div class="card">卡片 1</div>
    <div class="card">卡片 2</div>
    <div class="card">卡片 3</div>
    <div class="card">卡片 4</div>
  </div>
</body>
</html>

移动优先是行业趋势。原因:移动端代码更简洁,大屏通过媒体查询增强;Google 也优先索引移动端页面。

条件组合

多个条件可以用 and 组合,也可以用逗号分隔表示”或”:

/* 同时满足两个条件 */
@media (min-width: 768px) and (max-width: 1024px) { ... }

/* 满足任一条件即可(或) */
@media (max-width: 600px), (orientation: portrait) { ... }

/* 排除某个条件 */
@media not all and (monochrome) { ... }
<!-- 打印时才加载 -->
<link rel="stylesheet" href="print.css" media="print">

<!-- 屏幕宽度 >= 768px 时才加载 -->
<link rel="stylesheet" href="desktop.css" media="screen and (min-width: 768px)">

用 link 媒体查询可以减少不必要的 CSS 加载。但即使不加载,HTML 里引用的样式文件在匹配时仍会应用。

响应式设计三要素

要素说明
viewport 标签让页面宽度等于设备宽度
媒体查询根据屏幕尺寸应用不同样式
弹性布局使用相对单位(%、fr、flex)代替固定像素

三者缺一不可。viewport 是前提,媒体查询是工具,弹性布局是基础。

响应式属性速查

属性/概念作用
viewport meta设置视口宽度
@media媒体查询语法
min-width最小宽度断点
max-width最大宽度断点
orientation屏幕方向
resolution设备分辨率
hover是否支持悬停
prefers-color-scheme系统深色模式

调试响应式设计时,Chrome DevTools 的设备模式非常有用。按 F12,点击设备图标,可以模拟各种手机和平板尺寸。