国庆节10月1日
--


CSS 的三种引入方式(行内/内部/外部)及适用场景、颜色的四种表示法与 color 属性,以及控制段落外观的 line-height、text-indent

上一篇把央视新闻的内容用标签摆好了,但页面还是”白底黑字”的默认样子。从这一篇开始给页面上样式——先弄清 CSS 怎么引进页面、颜色怎么写,再动手把标题区那行日期调成灰色。
CSS(Cascading Style Sheet):层叠样式表,用于控制页面的样式(表现)。
结构没变,只是多了一条”颜色”样式:
1<!-- 结构一样,只是给这个标题加了颜色 -->2<h1 style="color:red;">HTML入门程序</h1>一句话:HTML 管”有什么”,CSS 管”长什么样”。
标题排版做完时长这样:新闻标题、蓝色的”央视网”链接、黑色的日期。接下来要把日期调成灰色——这才是新闻页面该有的样子。

<span> 包住的日期 2024年05月15日 20:07,目标颜色是浅灰同一个”日期变灰”的需求,CSS 可以有三种写法(课程文件 04. 央视新闻-标题-样式.html 把三种都写了出来):
写在标签的 style 属性中(PPT 说明:通常配合 JavaScript 使用):
1<!-- 方式一: 行内样式 -->2<span style="color: gray;">2024年05月15日 20:07</span>写在 <style> 标签中——可以写在页面任何位置,但通常约定写在 <head> 标签中:
1<head>2 <!-- 方式二: 内部样式 -->3 <style>4 span {5 color: #b2b2b2;6 }7 </style>8</head>写在一个单独的 .css 文件里,再通过 <link> 标签在网页中引入。
单独的文件 css/news.css:
1span {2 color: gray;3}在网页的 <head> 里引入它:
1<!-- 方式三: 外部样式 -->2<link rel="stylesheet" href="css/news.css">三种写法语法不一样,作用一样——不管用哪种,最终都是给”日期”这个元素加上一条 color 规则。区别只在于规则写在哪里。
| 引入方式 | 写法 | 写在哪 | 适用场景 |
|---|---|---|---|
| 行内样式 | <h1 style="..."> | 标签的 style 属性里 | 只影响这一个标签;配合 JavaScript 动态改样式时用 |
| 内部样式 | <style> … </style> | 页面里(通常约定放在 <head> 中) | 样式只给当前这一个页面用 |
| 外部样式 | .css 文件 + <link href="..."> | 单独的 CSS 文件 | 多个页面共用一套样式;结构和样式彻底分离,最推荐 |
外部样式的两个细节:① rel="stylesheet" 是告诉浏览器”引进来的是样式表”,不能省;② href 走的是相对路径(css/news.css 表示 CSS 文件在与 html 同级的 css 目录里)。
课程代码把这三种方式都留在文件里、用注释切换,是为了演示”三种写法效果一样”。如果同一条样式被多个地方设置,就会发生覆盖——行内样式优先级最高,几条选择器规则之间才按”id > 类 > 元素”比高低(见 07 篇)。
PPT 给了一张完整的颜色表示形式表:
| 表示方式 | 属性值 | 说明 | 示例 |
|---|---|---|---|
| 关键字 | 颜色英文单词 | red、green、blue | red、green、blue... |
| rgb 表示法 | rgb(r,g,b) | 红绿蓝三原色,取值:0-255 | rgb(0,0,0)、rgb(255,0,0) |
| rgba 表示法 | rgba(r,g,b,a) | 红绿蓝三原色,a 表示透明度,取值:0-1 | rgba(0,0,0,0.3)、rgba(255,0,0,0.5) |
| 十六进制表示法 | #rrggbb | # 开头,将数字转换成十六进制表示 | #000000、#ff0000,简写:#000、#f00 |
课程代码里把这四种都在同一个 span 上试了一遍(注释掉的几行就是):
1span {2 /* 关键字 */3 /* color: gray; */4
5 /* RGB表示法 */6 /* color: rgb(255, 120, 0); */7
8 /* RGBA表示法 */9 /* color: rgba(255, 120, 0, 0); */10
11 /* 十六进制表示法 */12 /* color: #0000ff; */13 color: #b2b2b2; /* 最后选定:十六进制的浅灰 */14}几个记忆点:
rgb(0,0,0) 是黑、rgb(255,255,255) 是白、rgb(255,0,0) 是纯红;rgba(255, 120, 0, 0) 就是”有颜色但完全看不见”;#rrggbb 每两位一组,分别对应红、绿、蓝;两位都相同时可以简写——#000000 写成 #000、#ff0000 写成 #f00;#b2b2b2 是三组十六进制数相同的灰色(也就是 #b2b2b2 → 灰、灰、灰)。color#1/* 颜色属性:设置文本内容的颜色 */2p {3 color: red;4}案例里就是它把日期改成灰色的:
1span {2 color: #b2b2b2;3}color 只管文字颜色(背景色是另一个属性 background-color)。写样式时如果发现”怎么没反应”,先检查两件事:属性名拼写、声明末尾的分号——CSS 既不报错也不提示,一句写错后面整块样式都可能失效。
line-height:行高#正文文字挨得太挤,用 line-height 设置行高:
1p {2 /* 设置行高 */3 line-height: 2; /* 行高: 2倍行高 */4}line-height: 2 就是 2 倍行高(字号 16px 时行高 32px);line-height: 32px。text-indent:首行缩进#中文正文每段要空两格,用 text-indent 设置首行缩进:
1p {2 /* 设置首行缩进 */3 text-indent: 2em; /* 首行缩进2个字符 */4}2em 里的 em 是相对于当前字号的单位:字号 16px 时,2em 就缩进 32px,也就是两个汉字的宽度。
这正是 05 篇里那个”笨办法”的升级版:之前为了段首空 4 格要敲 4 个 ,现在一条 text-indent: 2em 管住所有段落,字号变了缩进还会跟着变。
把上面两条属性加到新闻正文的段落上(课程文件 07. 央视新闻-正文-样式.html):
1<head>2 <style>3 /* id 选择器:把日期调成灰色 */4 #time {5 color: #b2b2b2;6 }7
8 /* 元素选择器:去掉超链接的下划线(见 07 篇) */9 a {10 text-decoration: none;11 }12
13 /* 元素选择器:所有段落统一行高与首行缩进 */14 p {15 line-height: 2; /* 行高: 2倍行高 */16 text-indent: 2em; /* 首行缩进2个字符 */17 }18 </style>19</head>效果:

line-height: 2 和 text-indent: 2em 之后——段落之间松快多了,每段开头自动空两格,加粗的”央视网消息”也一并生效这就完成了案例的前半程:标题排版(05 篇)→ 标题样式(本篇)→ 选择器(07 篇),后面还会给正文的段落、图片补上样式。
| 分类 | 内容 |
|---|---|
| CSS 引入方式 | 行内样式:<h1 style="...">;内部样式:<style> … </style>;外部样式:xxx.css + <link href="..."> |
| 颜色表示 | 关键字:red、green...;rgb:rgb(255,0,0)、rgb(134,100,89);rgba:rgba(255,0,0,0.5)、rgba(134,100,89,1);十六进制:#ff0000、#cccccc、#f00 |
| 颜色属性 | color:设置文本内容的颜色 |
| CSS 属性 | line-height:设置行高;text-indent:首行缩进 |
style 属性中(配合 JavaScript 使用);内部样式写在 <style> 标签中(可以写在页面任何位置,通常约定写在 <head> 标签中);外部样式写在一个单独的 .css 文件中,通过 <link> 标签引入<link rel="stylesheet" href="css/news.css">:rel="stylesheet" 说明引入的是样式表(不能省),href 是 CSS 文件的相对路径red、green、blue,颜色英文单词)、rgb(rgb(r,g,b),红绿蓝三原色,取值 0-255)、rgba(rgba(r,g,b,a),a 是透明度,取值 0-1)、十六进制(#rrggbb,# 开头)#000000 → #000、#ff0000 → #f00color 属性设置文本内容的颜色,例如 color: #b2b2b2;(案例里日期用的浅灰)、color: gray;、rgba(255, 120, 0, 0.5)(半透明的橙色)line-height 设置行高:line-height: 2 表示 2 倍行高(不带单位时是字号的倍数),也可以写 32px 这样的具体值text-indent 设置首行缩进:text-indent: 2em 表示首行缩进 2 个字符,em 是相对于当前字号的单位 2-1 用三种方式分别给三段文字设颜色
页面里从上到下有三段文字:行内样式的文字、内部样式的文字、外部样式的文字。要求:
test_06_外部样式.css 文件里,并在页面里把它引入进来test_06_三种引入方式.html 与 test_06_外部样式.css 里各有写作区。)一级 · 思路:给自己身上的属性、页面里的一个样式块、以及一个独立的样式文件——三条路各自把规则写在不同的地方
二级 · 方法:行内用 style="color:red";内部用 <style> 标签包规则;外部用 .css 文件 + <link rel="stylesheet" href="文件名.css">
三级 · 骨架:<标签名 style="color:____">…</标签名> / <style> p { color: ____; } </style> / <link rel="____" href="____.css">
test_06_三种引入方式.html:
1<head>2 <meta charset="UTF-8">3 <title>三种引入方式</title>4 <!-- 方式三:把外部样式文件引进来(路径相对本文件) -->5 <link rel="stylesheet" href="test_06_外部样式.css">6 <!-- 方式二:内部样式 -->7 <style>8 p {9 color: green;10 }11 </style>12</head>13<body>14 <!-- 方式一:行内样式 -->15 <h1 style="color: red;">行内样式的文字</h1>16
17 <p>内部样式的文字</p>18
19 <span>外部样式的文字</span>20</body>test_06_外部样式.css:
1/* 方式三:外部样式文件里写规则(这里的 span 是元素选择器的写法,07 篇细讲) */2span {3 color: blue;4}检查:<link> 要写在 <head> 里;href 是相对路径(同目录就直接写文件名);rel="stylesheet" 不能漏。
2-2 用四种表示法写出同一个红色 页面里有一段文字,要求依次给出四种写法(先注释掉再逐个打开效果):
test_06_颜色表示.html 里已经给出这段文字和写作区。)一级 · 思路:同样是红色,四种”说法”分别对应四个写法:英文单词、三个数字、四个数字、# 开头的短码
二级 · 方法:red / rgb(255,0,0) / rgba(255,0,0,0.5) / #f00
三级 · 骨架:color: ____;(试试把 rgb(255,0,0) 写成 rgb(255,0,1) 看看颜色有没有变化)
1p {2 /* 1. 关键字 */3 /* color: red; */4
5 /* 2. rgb 表示法:红绿蓝三原色,0-255 */6 /* color: rgb(255, 0, 0); */7
8 /* 3. rgba 表示法:第 4 个值是透明度,0-1 */9 /* color: rgba(255, 0, 0, 0.5); */10
11 /* 4. 十六进制简写:每两位相同才能简写 */12 color: #f00;13}对照课程 04. 央视新闻-标题-样式.html:四种写法都在注释里试过,最后选了十六进制的 #b2b2b2 作为日期颜色。注意 rgba 的透明度取值是 0-1,0.5 是一半透明。
2-3 把一段长文字调成”能读”的排版 页面里有一段很长的新闻文字,要求:
test_06_行高与缩进.html 里有一段现成的正文和写作区。)一级 · 思路:一个属性管”一行的上下距离”,另一个属性管”第一行往右挪多少”
二级 · 方法:line-height: 2(不带单位=字号倍数);text-indent: 2em(em 相对当前字号)
三级 · 骨架:p { line-height: ____; text-indent: ____em; }
1p {2 /* 行高:2 倍行高 */3 line-height: 2;4 /* 首行缩进:2 个字符 */5 text-indent: 2em;6}对照课程 07. 央视新闻-正文-样式.html:段首的缩进最早是用 4 个 手敲的,改用 text-indent: 2em 后,光标停在任意段落都有缩进,字号变大缩进也跟着变大。
3-1 给新闻页面配齐样式 在 05 篇综合题做的”新闻详情页”基础上,把样式补上(也可以从练习文件里的页面写):
#b2b2b2test_06_综合_新闻页面样式.css 文件里,用外部样式的方式引进来,确认效果完全一样test_06_综合_新闻页面样式.html 与 test_06_综合_新闻页面样式.css 里各有写作区。)一级 · 思路:先”选中元素”再”给属性”;选中有两类写法——按标签选、按名字选(这个名字是之前写在标签属性里的)
二级 · 方法:内部样式写在 <style> 里;搬出去后用 <link rel="stylesheet" href="....css"> 引入;日期用 color: #b2b2b2,段落用 line-height: 2 + text-indent: 2em
三级 · 骨架:<style> span { ____: #b2b2b2; } p { ____: 2; ____: 2em; } </style> → 搬到 .css 文件 → <link rel="____" href="____.css">
第三步之前(内部样式):
1<head>2 <meta charset="UTF-8">3 <title>新闻页面样式</title>4 <style>5 /* 日期:浅灰 */6 span {7 color: #b2b2b2;8 }9 /* 段落:2 倍行高 + 首行缩进 2 字符 */10 p {11 line-height: 2;12 text-indent: 2em;13 }14 </style>15</head>第三步之后(外部样式)——test_06_综合_新闻页面样式.css:
1span {2 color: #b2b2b2;3}4
5p {6 line-height: 2;7 text-indent: 2em;8}页面里把 <style> 整块删掉,换成:
1<link rel="stylesheet" href="test_06_综合_新闻页面样式.css">两处对比时注意:属性名拼写和每条声明末尾的分号是 CSS 最容易出错的地方(写错不报错,只是样式静默不生效)。
如果你喜欢,那么欢迎来到我的世界!
了解更多暂未播放



"所有的相遇都是久别重逢。"—— 未知


