CSS 语言基础¶
样式与样式表¶
CSS 的全称为 Cascading Style Sheets(层叠样式表),可以系统地描述网页内容的布局与面貌。
你可以点击 链接 来体会一下样式表的意义。在这个示例中,描述网页内容的 HTML 文本只有一份,但通过改变样式表,网页的布局就有了天翻地覆的变化。
引入 CSS
在 HTML 中引入样式的方式通常有三种:
- 内嵌于页面元素中;
- 通过
<style>
元素嵌入网页; - 通过外部链接引用。
在这份文档中,出于方便考虑,我们采用通过 <style>
元素嵌入网页的形式进行讲解。
常见的样式有颜色、字体、边距、对齐、背景、边框等。
我们先回到熟悉的 HTML:
1 2 3 4 5 6 7 8 |
|
考虑这样一个需求:
- 将主体(
<body>
)背景设为淡蓝色(lightblue
); - 将标题(
<h1>
)设为白色居中; - 将正文(
<p>
)字号设为20px
; - 将链接(
<a>
)颜色设为红色(red
)。
为了实现这些样式层面的需求,样式表诞生了。我们先看示例,再来分析 CSS 的语法格式:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
我相信,当你看到这样的文本时,已经能凭借直觉理解它的含义了。例如,body { background: lightblue; }
的含义就是将所有 <body>
元素的 background
设置为 lightblue
。
CSS 的语法格式非常简单,如下图所示。也正式这样一系列简单的规则描述,相互组合之后就能描述丰富的网页排版样式。
我们再来看一下,将 CSS 引入 HTML 后的一个完整网页文件将会呈现怎样的结构:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
|
你可以点击链接 引入 CSS 前 以及 引入 CSS 后 来感受 CSS 的作用。
类¶
使用上述样式表,我们可以对网页中指定类型的元素设置统一的样式。然而,我们有时会希望只对某一部分元素设定样式,这时就要引入类的概念了。
类的 CSS 选择语法与元素的类似,只需在类名前加上一个 .
即可。例如,我们希望定义一个类 red
,它的背景色是红色(red
),文本颜色为白色,且具有 10px
的内边距(padding
)和 5px
的外边距(margin
)。我们可以这样写:
1 2 3 4 5 6 |
|
在 HTML 代码中,我们只需给一个元素赋予 class="red"
的属性,这个元素就具备了我们所定义的 red
类的样式:
1 2 3 |
|
使用 <div>
添加分组
当我们想要将一系列元素视为一个整体进行布局时,我们可以采用 <div>
元素创建一个分组,对这个分组设置样式或进行排版。
我们还可以以此类推,创建 blue
、green
类。完整代码如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
|
你可以点击 链接 在浏览器中预览这段代码。
观察上述代码,我们发现,red
、blue
、green
类的 CSS 定义中都有三条重复的属性。我们可以将公共部分提取为一个公共的类 theme
,并给 HTML 中的每个 <div>
元素的 class
属性都额外添加一个 theme
类,如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
|
这样,我们的 CSS 代码也变得更加清晰与简洁。
用好开发者工具
Firefox、Chrome、Edge、Safari 等浏览器均为开发者提供了用于查看和调试网页的工具。打开开发者工具的快捷键通常为 F12,当然这也可能因你的浏览器和操作系统而异。你可以借助搜索引擎进一步了解。
以上述示例代码的网页为例,点击 链接,在打开的页面中启动开发者工具,动手查看一下元素的组织方式、元素的样式以及它们所属的类吧!
以下是使用 Firefox 浏览器调试上述示例代码网页的截屏。
你也可以利用同样的方式对后续的示例网页进行查看与调试。
组合选择器¶
考虑这样的需求:只希望 theme
类下的链接变为红色,其余位置的链接仍需使用默认样式。这就需要用到 CSS 组合选择器的语法了。如下所示:
1 2 3 |
|
.theme
是类选择器,a
是元素选择器,它们之间通过空格分隔,表示只对 .theme
类的 <a>
元素后代有效。
完整代码如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
|
你可以点击 链接 在浏览器中预览这段代码。
不同的组合方式
在 CSS3 中一共包含了四种组合方式:
- 后代选择器(以空格分隔)
- 子元素选择器(以大于号
>
分隔) - 相邻兄弟选择器(以加号
+
分隔) - 普通兄弟选择器(以波浪号
~
分隔)
参考手册
CSS 选择器有多种多样的表达形式,你可以参阅 CSS 选择器参考手册 来找到你所需要的选择器语法。
盒模型¶
盒模型将每个 HTML 元素视为一个方形盒子,关注的核心在于内外边距以及边框的样式。在排版布局时,我们需要合理设置 padding
和 margin
的数值,才能让自己的网页呈现出最舒适的布局。
网页布局¶
网页的布局通常有一些固定的模式。我们一般会将各个区域用 <div>
元素组合起来,然后考虑这些区域的排版布局。
了解原理即可
事实上,我们很少会完全手写网页的布局,因为许多前端样式库能够帮我们实现这些事情,且通常比我们手写的做得更好。
左右布局¶
网页的排布逻辑一般都是自上而下的。左右布局的区域通常需要组合后嵌套在一行中,且需要利用浮动(float
)属性,如下所示:
1 2 3 4 5 6 7 |
|
内嵌样式
你可能注意到了,上面的示例代码中,左边区域和右边区域的 <div>
元素上都添加了 width
、float
等样式属性。
这是一种通过内嵌于页面元素引入 CSS 的方式,可以“临时”“一次性”地为一些元素添加样式。
固定布局¶
我们有时会希望一些区域固定在网页的某个位置,例如我们会希望导航栏固定在页面顶部,不随页面滚动而改变。这时,我们只需使用 position: fixed
属性,如下所示:
1 2 3 4 5 |
|
即可让 top
类的元素实现固定顶部的效果。
完整代码如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
|
你可以点击 链接 在浏览器中预览这段代码。
后续拓展¶
现在,你已经学会了通过 CSS 控制网页的样式。接下来,你可以为你的网页赋予行为,这就需要 JavaScript 的相关知识。
当然,你可能会不满于手写 CSS 样式,想要探索一些前端样式库,因此你也可以继续往下阅读前端样式库的有关文档。
后续可以阅读的文档有:
- JavaScript 语言基础 /languages/javascript
- Bootstrap 简介 /languages/css/bootstrap
- MDUI 简介 /languages/css/mdui
资源链接¶
- w3school CSS 教程 https://www.w3school.com.cn/css/index.asp
- 菜鸟教程 CSS 教程 https://www.runoob.com/css/css-tutorial.html