Skip to content

CSS 基础(一) ​

本页对应 CSS 基础,共 7 段视频,约 1 小时 22 分。

学习目标 ​

  • 能说明 CSS 美化网页的作用,并按“选择器 { 属性: 值; }”语法在 style 标签中完成文字颜色、字号等基础样式设置。
  • 能区分内部样式表、外部样式表和行内样式表三种 CSS 引入方式,正确使用 link 引入外部 CSS 文件,并说出各自适用场景。
  • 能使用标签选择器为页面中所有同名标签统一设置样式,并通过浏览器刷新验证生效结果。
  • 能定义类选择器(.类名)并通过 class 调用,完成指定标签的差异化样式设置;能为一个标签添加多个类名并用空格分隔。
  • 能识别并书写 id 选择器(#id)和通配符选择器(*),说明 id 的唯一性要求及通配符选择所有标签的作用。
  • 能按“先大后小、先画盒子再填内容”的思路分析简单页面结构,并区分装饰性背景图片与产品/常换内容插入图片的使用场景。

知识点 ​

CSS 是什么:让 HTML 从“能看”到“好看” ​

为什么需要:只写 HTML 时,页面能显示文字、图片、链接,但链接颜色、下划线、列表小点等样式不好改,页面也不够美观。转写稿里用“化妆师”“美颜”作比喻:内容还是那些内容,CSS 让页面变得更漂亮。

怎么想:先记住 CSS 的中文名和用途。层叠样式表(Cascading Style Sheets,缩写为 CSS)是一种样式表语言,用来描述 HTML 文档的呈现,也就是美化内容。学习初期不必纠结“层叠”二字,先理解它是给 HTML 做样式的。

怎么做:把 HTML 结构和 CSS 样式分开写。转写稿强调:HTML 内容写到 body 里,样式写到 head 里的 style 中;以后改结构找 body,改样式找 style,这样不容易乱。

易错点:style 本质仍是 HTML 标签,只是浏览器遇到它时,会把里面的代码按 CSS 解析;不要把 style 当成“CSS 文件”。CSS 写到页面其他位置也可能生效,但不建议和结构混在一起写。

写在哪里:title 标签下方加 style 双标签 ​

为什么需要:CSS 代码要有固定书写位置,才能让 HTML 找到并应用样式。

怎么想:本节笔记给出的位置很明确:title 标签下方添加 style 双标签,style 标签里面书写 CSS 代码。也就是先写 title,再写 <style> ... </style>。

怎么做:在 head 区域中,title 下方写 style 双标签;页面内容仍然写在 body 中。笔记代码如下,需保留:

html
<title>CSS 初体验</title>
<style>
  /* 选择器 { } */
  p {
    /* CSS 属性 */
    color: red;
  }
</style>

<p>体验 CSS</p>

易错点:不要把 CSS 规则直接写成正文内容;style 要成对出现;选择器 p 写在花括号外,属性和属性值写在花括号内。

基本语法:选择器 + 键值对 ​

为什么需要:页面标签很多,不能“想改谁就随便写”,必须先选中目标标签,再设置样式。转写稿说,选择器的主要作用是查找或选择标签,选出来之后再修改样式。

怎么想:本例中 p 就是选择器,表示先选中页面中的 p 标签;花括号里写具体样式。color: red; 中,color 是属性名,red 是属性值。笔记提示:属性名和属性值成对出现 → 键值对。转写稿也把它讲成 key: value; 的形式:属性名和属性值之间用冒号隔开,最后用分号结束。

怎么做:先写选择器,再写一对花括号;花括号内写“属性名: 属性值;”。例如 p { color: red; } 表示把 p 标签的文字颜色改为红色。

易错点:不要把 red 拼成 read;不要漏掉冒号和分号;选择器写标签名时不要加尖括号,写 p,不是 <p>;本例虽然只有一个 p,但标签选择器会选中页面中所有同名 p 标签,这一点要在后续练习中留意。

动手体验与调试过程 ​

为什么需要:只看语法容易“以为会了”,实际写一遍才能发现位置、拼写、标点等问题。

怎么想:按“先结构、后样式”的顺序做:先在 body 写一个 p,再在 title 下方写 style,用 p 选择器设置 color: red;。

怎么做:保存文件后刷新页面,观察 p 的文字是否变红。转写稿中的调试过程是:样式定义好后,下面的结构会随之变化;如果没有变化,就回头检查 style 是否写在 head 中、选择器是否匹配、color 和 red 是否拼写正确、冒号和分号是否遗漏,以及文件是否保存并刷新。

易错点:不要因为“写进去没反应”就继续堆代码,应先按上述顺序排查。还要注意:style 是 HTML 标签,里面的内容才是 CSS;HTML 与 CSS 分工写清楚,后面改代码才不会乱。

提示:属性名和属性值成对出现 → 键值对。

本节目标:先搞清楚 CSS 写在哪里 ​

这一节解决一个很基础但很关键的问题:CSS 代码到底可以写在哪里?按书写位置,常见有三种方式:内部样式表、外部样式表、行内样式。它们不是谁绝对替代谁,而是使用场景不同:学习阶段常用内部样式表,方便上面看样式、下面看结构;开发中样式多时常用外部样式表;行内样式则适合少量样式,并常配合 JavaScript 使用。

内部样式表:学习时最方便对照 ​

为什么需要:初学阶段,我们希望写一点 CSS 就能马上看到效果,并且能同时看到 HTML 结构和 CSS 样式,方便对比、修改和调试。
怎么想:CSS 是样式,HTML 是结构。虽然 CSS 写到页面某些位置也可能生效,但最好把结构和样式分开看:HTML 内容写在 body 里,CSS 写在 head 里的 style 标签中。
怎么做:在 HTML 的 head 区域写 style 标签,CSS 代码放在里面。例如:

html
<style>
  p {
    color: red;
  }
</style>

注意 style 本身仍是 HTML 标签,只是这个标签比较特殊,里面的代码会按 CSS 解析。
易错点:不要把 CSS 规则直接裸写在 body 里;也不要把“内部样式表”理解成 CSS 文件,它仍然写在当前 HTML 页面中。学习阶段用内部样式表,是因为改起来直观,不是因为它适合所有正式项目。

外部样式表:开发中样式多时使用 ​

为什么需要:当 CSS 可能有上百上千行时,如果全塞在 HTML 的 style 标签里,光翻样式就要翻很久,结构和样式混在一起也不好维护。
怎么想:把 CSS 单独放到一个 .css 文件中,HTML 需要时再把它“连接”进来。外部是相对于 HTML 文件来说的,CSS 文件放在 HTML 文件外边。
怎么做:先新建 HTML 文件,再新建 my.css。CSS 文件里不需要再写 style 标签,直接写规则,例如 p { color: red; }。然后在 HTML 中用 link 引入:

html
<link rel="stylesheet" href="./my.css">

调试时很容易遇到“CSS 写了但页面没变红”的情况:HTML 和 CSS 是两个独立文件,不建立联系就不会生效。此时检查是否加了 link,rel 是否为 stylesheet,href 路径是否指向正确的 CSS 文件。
易错点:.css 后缀不能乱写;CSS 文件里不要再套 style 标签;href 路径写错是常见不生效原因。开发中外部样式表更常用,因为样式多时便于维护。

行内样式:少量样式、配合 JavaScript ​

为什么需要:有时只想给某一个标签临时改一点样式,或者后续由 JavaScript 操作某个标签的样式,这时可以直接写在标签上。
怎么想:行内样式的作用范围就是当前这个标签,写法是把 CSS 写进标签的 style 属性值里。
怎么做:在标签上写 style,里面用“属性名: 属性值;”的形式,例如:

html
<div style="color: red; font-size:20px;">这是 div 标签</div>

易错点:行内样式不适合写很多,写多了会横着排很长,阅读和维护都麻烦;它更适合少量样式,通常配合 JavaScript 使用。实际工作中外部样式表更常见,但当前学习阶段内部样式表用得多,因为方便对照结构和样式。

小结:三种方式怎么选 ​

内部样式表写在 style 标签里,适合学习和快速对照;外部样式表写在独立 .css 文件中,通过 link 引入,适合开发中样式较多的场景;行内样式写在标签的 style 属性里,适合少量样式并配合 JavaScript。先记住一句话:HTML 管结构,CSS 管样式;样式多走外部,学习对照用内部,少量临时用行内。

课件图示(PPTX) ​

day03 课件图

day03 课件图

代码示例 ​

示例一:CSS 初体验 + 标签选择器(内部样式表) ​

html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <title>CSS 初体验</title>
  <!-- 样式写在 title 下方(head 里),结构写在 body 里,做隔离 -->
  <style>
    /* 选择器 { 属性名: 属性值; } */
    p {
      color: red;
    }
    div {
      color: pink;
    }
  </style>
</head>
<body>
  <p>体验 CSS</p>
  <p>体验 CSS</p>
  <div>我是 DIV</div>
  <div>我是 DIV</div>
  <div>我是 DIV</div>
</body>
</html>

要点解释:

  • style 本质仍是 HTML 标签,位置放在 title 下方、</head> 之前,里面的代码才按 CSS 解析。
  • 写法是键值对:color 是属性名,red 是属性值,中间冒号、结尾分号,大括号包裹。
  • 标签选择器按标签名查找,p 会选中页面中所有 p,一改全改,无法只改其中一个。
  • 易错点:漏写结尾分号;把样式写到 body 里和结构混在一起;写不存在的标签名(如 dnve)不会生效。

示例二:类选择器 + 多类名 ​

html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <title>类选择器与多类名</title>
  <style>
    /* 定义:类名前必须加点 */
    .red {
      color: red;
    }
    .fz {
      font-size: 28px;
    }
  </style>
</head>
<body>
  <!-- 调用:class 里写类名,不加点;多个类名用空格隔开 -->
  <p class="red fz">第一个 P:红色 + 28px</p>
  <p class="red">第二个 P:只有红色</p>
  <p>第三个 P:默认样式</p>
</body>
</html>

要点解释:

  • 类选择器分两步:上面 .red { } 定义,下面 class="red" 调用;不调用就不会生效。
  • 定义时必须加点(点相当于 class 的标志),调用时千万不要加点。
  • 一个标签可写多个类名,用空格隔开,class="red fz" 同时拥有红色和字号两种样式。
  • 易错点:类名不能用纯数字(.1 会报错);尽量不用中文(可能乱码);font-size 后面必须带单位 px。

示例三:CSS 三种引入方式 ​

html
<!-- 文件一:index.html -->
<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <title>CSS 引入方式</title>
  <!-- 外部样式表:开发使用,href 指向同级目录下的 my.css -->
  <link rel="stylesheet" href="./my.css">
  <!-- 内部样式表:学习使用 -->
  <style>
    p {
      color: red;
    }
  </style>
</head>
<body>
  <p>内部样式表改红</p>
  <!-- 行内样式:配合 JavaScript 使用,写在标签的 style 属性里 -->
  <div style="color: red; font-size: 20px;">这是 div 标签</div>
</body>
</html>
css
/* 文件二:my.css(与 index.html 同级,后缀必须是 .css,里面直接写 CSS,不再加 style 标签) */
h1 {
  color: blue;
}

要点解释:

  • 外部样式表:CSS 写在单独的 .css 文件里,HTML 用 link 引入,rel="stylesheet" 表示样式表,href 写路径;开发中样式多时首选。
  • 内部样式表:写在 style 双标签里,学习阶段常用,便于上面样式、下面结构对照。
  • 行内样式:直接写在标签 style 属性里,只适合少量样式,写多了会很长、很难看。
  • 易错点:.css 文件里再加 style 标签是错的;link 忘了写或路径写错,样式完全不生效;行内多个样式之间也要用分号隔开。

常见错误 ​

1. 样式代码没反应,页面顶部却多出一行 p { color: red; }

  • 现象:刷新后文字没变红,反而在页面最上方看到这串代码。
  • 原因:直接把 CSS 写进了 head 或 body,漏掉 style 双标签,浏览器把这段当成普通文本渲染。
  • 修法:title 下方补上 <style> … </style>,所有 CSS 声明写在这对标签内部。

2. 外部样式表引入后完全不生效,控制台也没有报错

  • 现象:my.css 里写了样式,HTML 里也写了 link,但页面毫无变化。
  • 原因:多为三种情况——link 写在了 body 末尾、rel 属性漏写或拼错、href 路径写错(相对路径的 ./ 或文件名大小写)。
  • 修法:link 放到 head 内,写成 <link rel="stylesheet" href="./my.css">,逐个核对 rel 拼写与文件真实路径。

3. 在 .css 文件里又写了一遍 <style> 标签

  • 现象:CSS 文件里的第一条规则失效,或整个文件样式全部不生效。
  • 原因:.css 是纯 CSS 文件,只认选择器和声明,不认 HTML 标签;<style> 只属于 HTML 页面。
  • 修法:删掉 style 双标签,.css 文件里直接从 p { … } 开始写。

4. 行内样式里写了选择器:style="p{color:red}"

  • 现象:该标签样式不变,style 属性整串被忽略。
  • 原因:行内样式写在 style 属性值里,只接受"属性名: 属性值"的声明,不接受选择器和大括号。
  • 修法:改成 style="color: red; font-size: 20px;",只保留声明本身。

5. 声明写了却不生效,代码看着"没错"

  • 现象:color = red、color:red、font-size: 20 这类写法页面无变化。
  • 原因:属性与值之间必须用英文冒号,不能用等号或中文冒号;部分属性(如 font-size)必须带单位,只写数字无效。
  • 修法:统一用英文 : 分隔、英文 ; 结尾,需要单位的属性补上 px。

6. 改完 CSS 保存了,浏览器里还是旧样子

  • 现象:代码明明改了,页面还是上一次的效果,误以为写错。
  • 原因:浏览器缓存了旧的 .css 文件,尤其外部样式表最容易出现。
  • 修法:强制刷新(Ctrl + F5),或确认编辑器和浏览器打开的是同一个文件路径。

练习 ​

1. 内部样式表起步 新建 HTML 文件,在 title 下方写 style,把页面中所有 p 的文字改成红色。要求:结构在 body、样式在 head,两者不混写。

2. 外部样式表引入 新建 my.css,在其中让 div 的文字变蓝、字号 20px;再新建 HTML 文件,用 link 把它引入。故意把 href 写错一次,观察现象后再改回来,说清楚"不生效"是路径问题还是语法问题。

3. 行内样式 给一个按钮加行内样式:文字白色、背景红色、字号 16px。写完后数一数这一行有多长,判断这个场景该不该用行内样式。

4. 找错并修正 下面这段代码有 4 处问题,找出来并改对:

html
<body>
  <link rel="stylesheet" href="my.css">
  <p style="p{color:red}">文字</p>
</body>

(提示:从 link 的位置与属性、行内样式的写法、以及是否需要 style 标签三个方向想。)

5. 选型判断 三个场景,分别选一种引入方式并说明理由: ① 实际中跟着做一个 20 行的小 demo; ② 一个包含 8 个页面、共用同一套样式的项目; ③ 用 JS 点击按钮后动态改变某个元素的颜色。

原视频对照 ​

#视频时长
1复习反馈和今日内容26:31
2css体验10:14
3css引入方式09:27
4标签选择器11:09
5类选择器09:52
6多类名写法05:59
7id选择器和通配符选择器09:22

小结 ​

  1. 位置决定归属:结构归 body、样式归 head,这条分界线一旦模糊,后面找 bug 的成本会成倍上升。
  2. style 是 HTML 标签,不是 CSS 语法——它只是装 CSS 的容器;判断一段代码属于谁,看它有没有尖括号就够了。
  3. 内部样式表适合"看得见的对照":结构和样式在同一屏,改一处立刻能比对,所以学习阶段用它效率最高。
  4. 外部样式表是工程化的默认答案,理由不在语法,而在可复用、可缓存、可多人协作——一个 .css 供多页共用。
  5. 行内样式优先级最高,也最难维护:它的合理归宿只有一个,就是让程序(JS)去改,而不是让人手写。
  6. 三种引入方式不是"谁更高级",而是**"谁在改这份样式"**:人改选外部、程序改选行内、临时验证选内部。
  7. 样式不生效时,排查顺序是固定的:先看引入路径,再看选择器是否选中,最后才怀疑属性拼写——按这个顺序能省掉大半时间。
  8. 每一条声明都是 键: 值;,分号不是可选项,它是下一条声明的边界,漏一个分号可能连带后面几条一起失效。