正在加载...

如何添加 CSS

规则写得再漂亮,如果浏览器根本没有加载它,页面也不会有任何变化。这一课我们讲怎样把 CSS 接入 HTML:常见的三种方式,以及哪一种应该成为你的默认选择。

怎样向 HTML 页面添加 CSS?

有三种方式:在 head 里用 link 引入的外部样式表,写在 head 里的内部 <style> 块,以及直接加在某个元素上的内联 style 属性。做真实网站或多页面项目时,建议从独立的 .css 文件开始。

三种方式一览

动手之前,先用这张表选好方式。后面每种方式都会配一个简短示例。

📊 添加 CSS 的方式

方式 写在哪里 能否跨页面复用 日常最佳用途
外部样式表 独立的 .css 文件,加上 head 里的 <link> 很好 项目和本课程的默认选择
内部 CSS HTML head 中的 <style> … </style> 只限当前页面 快速演示、单文件练习
内联 CSS 某个 HTML 元素上的 style="…" 不能 临时的一次性小改动(尽量少用)

外部样式表(推荐的默认方式)

把 HTML 和 CSS 分开放在两个文件里。在 head 中用 link 元素指向样式表,浏览器就会下载这个 CSS 文件并应用其中的规则。

引入外部样式表

html
HTML Code
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>How To — External CSS</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<h1 class="hero">Styled from styles.css</h1>
</body>
</html>

把规则写进与 HTML 文件放在一起的 styles.css(如果文件在子文件夹里,记得把 href 改成对应路径):

外部 styles.css

css
CSS Code
.hero {
color: #0f766e;
font-family: Georgia, serif;
}

为什么真实项目更适合外部样式表

  • 一个样式表可以同时管理很多 HTML 页面的外观
  • 想改外观时,不用在一堆标签里翻找样式
  • 浏览器可以缓存 .css 文件,切换页面时不必重新下载
  • 一定要写 rel="stylesheet" 和正确的 href。路径哪怕拼错一点,浏览器也不会报错,页面只会悄悄变成没有样式的样子

内部 CSS(head 中的 <style>)

只有一个练习页面时,可以把规则直接写在 head 里的 <style> 元素中。前面的“简介”和“语法”两课就是这样做的,这样 HTML 和 CSS 都在同一个文件里。

内部 style 块

html
HTML Code
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>How To — Internal CSS</title>
<style>
.hero {
color: #1d4ed8;
}
</style>
</head>
<body>
<h1 class="hero">Styled from a style block</h1>
</body>
</html>

什么时候用内部 CSS 就够了

演示,或是要求只交一个文件的作业,用内部 CSS 完全没问题。但项目一大就不够用了:把同一个 <style> 块复制到每个页面里,时间久了各份代码会渐渐不一致,改一处就得改很多处。只要页面超过一个,或者你想让代码结构更清晰,就换成外部文件。

内联 CSS(style 属性)

内联方式是把声明(declaration)直接写在元素的 style 属性里。这里没有选择器,也没有单独的文件,只有这一个元素会受影响。

内联 style 属性

html
HTML Code
<h1 style="color: #b45309; font-size: 1.75rem;">Styled inline</h1>

请少用

内联样式很适合临时快速试一下效果,但它把外观混进了 HTML 结构里,没法复用;等你遇到 cascade(层叠)和 specificity(优先级)的问题时,它还很难被覆盖。更好的做法是在样式表里用 class。关于 cascade 中冲突的处理规则,后面的课程会讲;现在只需记住:内联是例外,不是习惯。

到底该选哪一种?

  • 做网站,或者做本课程的项目: 外部样式表
  • 课堂上的一个简短演示文件: 内部 <style> 可以接受
  • 调试时想临时改一下某个元素: 内联样式能帮上忙,改完再把规则搬回样式表
    三种方式可以混用。同一个属性在多个地方都设置了值,浏览器会按 cascade 规则决定用哪一个(后面会讲)。有个好习惯:长期使用的样式都放在外部文件里,不要把同一个属性分散写在三种方式中。

自己动手试试

  1. 在同一个文件夹里创建 howto.html 和 styles.css。
  2. 在 howto.html 的 head 中加入 <link rel="stylesheet" href="styles.css">,并在 body 中写一个标题:<h1 class="hero">How-to practice</h1>。
  3. 在 styles.css 中写入:.hero { color: #0f766e; },然后用浏览器打开这个 HTML 文件。
  4. 把颜色改成 #1d4ed8,保存 CSS 文件后刷新页面,标题颜色应该会变。
  5. 临时在 h1 上加上 style="color: #b45309;",刷新查看效果,然后删掉这个属性,让颜色重新由样式表决定。

常见错误

  • 习惯性地把 <link rel="stylesheet" …> 放进 body。它应该放在 head 里,和文档的其他元信息放在一起
  • href 拼写错误(比如把 styles.css 写成 style.css),文件根本加载不到,页面就没有样式
  • 忘了在 link 元素上写 rel="stylesheet"
  • 把完整的 <style> 块粘贴到每个页面,而不是共用一个外部文件
  • 所有颜色和字体都靠内联 style 来设置,结果 HTML 越来越乱,难以维护

小结

  • 三种方式:外部样式表、内部 <style>、内联 style 属性
  • 真实页面的默认做法是:在 head 中用 <link rel="stylesheet" href="…"> 引入外部文件
  • 内部 CSS 适合单文件练习,内联样式只用于偶尔的一次性改动
  • 路径写错或漏掉 rel,是样式“不起作用”的常见原因
  • 练习方法:引入一个真实的 .css 文件,改一个值,然后刷新页面

🧠 测试您的知识

准备开始

测试您的知识

通过这个互动测验挑战自己,看看你对这个主题的理解程度如何

❓
8
问题
🎯
70%
及格要求
♾️
∞
时间
🔄
∞
尝试次数

📝 说明

  • 仔细阅读每个问题
  • 为每个问题选择最佳答案
  • 您可以随时重新参加测验
  • 您的进度将显示在顶部