HTML 管内容,CSS 管长相——内容与样式分离是 Web 设计的第一原则。手写 CSS 累了,就站在 CSS 框架(Bootstrap 等)的肩膀上。
上游:网络 4.3 · 样式表 讲过语法细节;本篇重点讲「分离」思想与框架现状。下游:6-7 的 DOM 操作会动态改样式,6-6 的 MVVM 让数据绑定连样式一起管。
一、CSS:给骨架穿衣服
CSS(Cascading Style Sheets,层叠样式表)用「选择器 → 属性: 值」的规则描述长相:
h1 { /* 选择器:所有 h1 */
color: #c0392b; /* 字色:红 */
font-size: 28px; /* 字号 */
}
.warn { /* 选择器:class 为 warn 的元素 */
background: #fff3cd; /* 背景 */
}
#header a:hover { /* id 为 header 里的链接、悬停时 */
text-decoration: underline;
}
三个关键机制:
- 层叠(Cascading):多条规则同时命中一个元素时按优先级合并——越具体越优先、后来者覆盖先来者。
- 继承:字色、字体等会从父元素传给子元素;边框、尺寸不会。
- 三种接入方式:内联 style="..."、页内 <style>、外部 .css 文件(首选——一份样式全站共用,改一处全站变)。
二、CSS 框架:现成的设计系统
手写 CSS 最耗时的不是语法,是设计感(间距、配色、栅格布局、响应式)。CSS 框架把这套预先做好:
- Bootstrap(2011 至今):组件最全的常青树,2026 年 W3Techs 数据仍是 CSS 框架份额第一(约 13.4% 的网站在用、框架内占比约 75%)——引入它的 class 名,导航栏、按钮、栅格立刻成型。
- Tailwind CSS:新流派——不给你成品组件,给一堆原子小类(
class="mt-4 p-2 text-center")让你拼;在开发者群体中热度第一,但因部署惯性,存量网站占比仍小(W3Techs 约 0.3%)。 - 教材成书时 React/Vue 生态常用 CSS-in-JS、UI 组件库,思路相同:把设计沉淀成可复用资产。
三、分离的意义
HTML 只说「这是一个标题」,CSS 说「标题长这样」——于是: - 换皮肤不改内容:同一份 HTML,换套 CSS 就是暗色主题。 - 分工可行:美工改 CSS、程序员改逻辑,互不踩脚(5-9 里「标准流」分工的 Web 版)。 - 可访问性:读屏器只关心 HTML 结构,样式随便换,内容语义不变。
动手 Demo:一份 HTML,两套 CSS
<!-- demo.html -->
<!DOCTYPE html>
<html>
<head><meta charset="UTF-8">
<link rel="stylesheet" href="style.css">
</head>
<body>
<h1>成绩单</h1>
<p class="hl">波仔:88 分</p>
</body>
</html>
/* style.css —— 只改这三行,页面气质全变 */
body { font-family: sans-serif; background: #f6f8fa; text-align: center; }
h1 { color: #0969da; }
.hl { background: #fff8c5; padding: 4px 12px; border-radius: 6px; }
看到什么算成功:浏览器打开 demo.html,标题是蓝色、高亮行有浅黄底。把 h1 { color: ... } 改成 #c0392b 刷新——红标题,HTML 一字未动。
读结果:改的是 .css 文件而非网页本体——这就是「内容与样式分离」的全部收益。
30 秒实验
F12 打开开发者工具 → 点左上角箭头图标 → 点击页面任意元素 → 右侧「样式」面板实时勾掉某条 CSS 规则看页面变化;再点「元素」面板直接改文字。所有改动画在本地、刷新即还原——学 CSS 最好的 playground 就是别人的网站。
常见误区
- 「CSS 很简单随便写写」——语法五分钟,层叠与继承的优先级规则能让老手栽跟头(「为什么我的样式不生效!」多半是优先级被覆盖)。
- 「Bootstrap 过时了没人用」——开发者新项目转向 Tailwind 是真的,但存量网站里 Bootstrap 仍稳居第一(W3Techs 2026:13.4% vs 0.3%)——部署惯性与开发者热度是两回事(6-8 的 jQuery 同理)。
- 「样式写 HTML 里更方便」——内联样式无法复用、优先级最高难覆盖,5-2 里「一份事实只存一处」的反例。
自测三问(点击展开)
1. **CSS 里「Cascading」指什么?** 答:层叠——多条规则命中同一元素时按优先级合并,越具体/越晚者优先。 2. **为什么推荐外部 CSS 文件?** 答:全站共用一份、改一处全站变;内容与样式分离、可分工可换肤。 3. **Bootstrap 与 Tailwind 思路差别?** 答:Bootstrap 给成品组件(拿来即用),Tailwind 给原子小类(自由拼装)。- ☑ 6-3 完成 —— 内容与样式分离+框架现状
- ☐ 下一节 6-4 Cookie、会话
相关笔记
- 网络 4.3 · 样式表 —— 语法细节先修篇
- 命名与规范 —— class 命名的同一门功课
- ⌨️ 编程原理 · 索引 —— 全课路线图