ZYH 开发教程
学习中心/Web 前端
Web 前端

CSS:样式、布局与响应式设计

理解盒模型、层叠、Flex、Grid、移动优先和无障碍样式。

一条 CSS 规则#

css
.lesson-card {
  padding: 24px;
  color: #1d1d1f;
  background: #ffffff;
  border: 1px solid #d2d2d7;
  border-radius: 20px;
}

.lesson-card 是选择器,花括号内是声明。padding 是属性,24px 是值。

先理解盒模型#

每个元素都像一个纸箱:内容在最里面,依次是内边距 padding、边框 border、外边距 margin。

css
*, *::before, *::after {
  box-sizing: border-box;
}

使用 border-box 后,声明的宽高会包含内边距和边框,更容易计算。

层叠、继承和优先级#

CSS 会合并多条规则。后出现不一定永远获胜,还要比较选择器优先级和规则来源。初学时:

  • 用清晰的类名设置组件样式;
  • 避免过长的选择器;
  • 少用 !important;
  • 利用开发者工具查看哪条规则被覆盖。

Flex 与 Grid#

Flex 适合一维排列,例如导航和按钮组:

css
.nav {
  display: flex;
  align-items: center;
  gap: 16px;
}

Grid 适合二维页面和卡片网格:

css
.course-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 20px;
}

不要用大量固定定位拼页面。先让内容参与正常文档流,再选择布局工具。

移动优先响应式#

先写手机样式,再在屏幕足够宽时增强:

css
.page { padding: 16px; }

@media (min-width: 768px) {
  .page { padding: 32px; }
}

响应式检查#

  • 页面在 320、375、768、1024、1440px 不产生整体横向滚动;
  • 正文至少 16px,行高约 1.5–1.8;
  • 图片最大宽度为 100%;
  • 按钮和链接触控区域至少 44×44px;
  • 表格自身可横向滚动,不能撑破页面;
  • 不禁用用户缩放。

可访问的颜色和焦点#

正文与背景对比度至少 4.5:1。鼠标悬停不是唯一反馈,键盘焦点也要清楚:

css
:focus-visible {
  outline: 3px solid #0071e3;
  outline-offset: 3px;
}

需要理解#

  • 相对单位:rem、em、百分比、视口单位;
  • 自定义属性(CSS 变量)管理颜色和间距;
  • position 的几种模式与堆叠上下文;
  • 伪类和伪元素;
  • 过渡与动画;
  • reduced motion、深色模式和打印样式。
css
:root {
  --color-text: #1d1d1f;
  --space-3: 24px;
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto; transition: none; }
}

常见错误#

  • 只在自己的电脑宽度测试;
  • 用固定高度装正文,文字增多后溢出;
  • 到处写重复色值和间距;
  • 用极大的 z-index 解决所有遮挡;
  • 文字使用很浅的灰色;
  • 为了动画改变宽高,引起页面跳动;
  • 没有焦点样式或直接去掉 outline。

动手练习#

给 HTML 学习档案添加样式:手机单栏、平板两栏、桌面三栏;设计导航、进度条、课程卡片、表单、表格和焦点状态。用开发者工具切换尺寸,并把发现的问题记录下来。

完成标准#

  • 能解释盒模型和 border-box。
  • 能分别用 Flex 和 Grid 完成合适布局。
  • 页面在常见尺寸没有主体横向滚动。
  • 键盘焦点可见,正文对比度合格。
  • 改变文字长度后布局仍稳定。
可搜索标题、说明和正文Esc 关闭
从一个简单词开始试试“HTML”“数据库”“登录”或“部署”
在线练习修改代码并查看结果
运行结果