CSS入门
CSS
CSS 简介
- CSS 指的是层叠样式表 (Cascading Style Sheets)
- CSS 描述了如何在屏幕、纸张或其他媒体上显示 HTML 元素
- CSS 节省了大量工作。它可以同时控制多张网页的布局
- 外部样式表存储在 CSS 文件中
CSS 语法
- 选择器指向您需要设置样式的 HTML 元素。
- 声明块包含一条或多条用分号分隔的声明。
- 每条声明都包含一个 CSS 属性名称和一个值,以冒号(
:
)分隔。 - 多条 CSS 声明用分号(
;
)分隔,声明块用花括号({}
)括起来。
示例:所有 <p>
元素都将居中对齐,并带有红色文本颜色:
1
2
3
4
p {
color: red;
text-align: center;
}
- p 是 CSS 中的选择器(它指向要设置样式的 HTML 元素:
<p>
)。 - color 是属性,red 是属性值
- text-align 是属性,center 是属性值
CSS 选择器
CSS 选择器分类
CSS 选择器用于 “ 查找 “(或选取)要设置样式的 HTML 元素。我们可以将 CSS 选择器分为五类:
- 简单选择器(根据名称、id、类来选取元素)
- 组合器选择器(根据它们之间的特定关系来选取元素)
- 伪类选择器(根据特定状态选取元素)
- 伪元素选择器(选取元素的一部分并设置其样式)
- 属性选择器(根据属性或属性值来选取元素)
简单选择器
选择器 | 实例 | 实例描述 |
---|---|---|
.class | .intro | 选取所有 class=”intro” 的元素。 |
#id | #firstname | 选取 id=”firstname” 的那个元素。 |
* | * | 选取所有元素。 |
element | p | 选取所有 <p> 元素。 |
element,element,.. | div, p | 选取所有 <div> 元素和所有 <p> 元素。 |
CSS 元素选择器
元素选择器根据元素名称来选择 HTML 元素。
1
2
3
4
p {
text-align: center;
color: red;
}
CSS id 选择器 #
id 选择器使用 HTML 元素的 id 属性来选择特定元素。
元素的 id 在页面中是唯一的,因此 id 选择器用于选择一个唯一的元素!
要选择具有特定 id 的元素,请写一个井号(#
),后跟该元素的 id。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<!DOCTYPE html>
<html>
<head>
<style>
#para1 {
text-align: center;
color: red;
}
</style>
</head>
<body>
<p id="para1">Hello World!</p>
<p>本段不受样式影响。</p>
</body>
</html>
注意: id 名称不能以数字开头。
CSS 类选择器 .
类选择器选择有特定 class 属性的 HTML 元素。
如需选择拥有特定 class 的元素,请写一个句点(.
)字符,后面跟类名。
示例:所有带有 class=”center” 的 HTML 元素将为红色且居中对齐:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<!DOCTYPE html>
<html>
<head>
<style>
.center {
text-align: center;
color: red;
}
</style>
</head>
<body>
<h1 class="center">红色和居中对齐的标题</h1>
<p class="center">红色和居中对齐的段落。</p>
</body>
</html>
还可以指定只有特定的 HTML 元素会受类的影响:只有具有 class="center"
的 <p> 元素会居中对齐:
1
2
3
4
p.center {
text-align: center;
color: red;
}
HTML 元素也可以引用多个类。
示例:<p> 元素将根据 class=”center” 和 class=”large” 进行样式设置:
1
<p class="center large">This paragraph refers to two classes.</p>
注意: 类名不能以数字开头!
CSS 通用选择器 *
通用选择器(*
)选择页面上的所有的 HTML 元素。
示例:下面的 CSS 规则会影响页面上的每个 HTML 元素:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<!DOCTYPE html>
<html>
<head>
<style>
* {
text-align: center;
color: blue;
}
</style>
</head>
<body>
<h1>Hello world!</h1>
<p>页面上的每个元素都会受到样式的影响。</p>
<p id="para1">我也是!</p>
<p>还有我!</p>
</body>
</html>
CSS 分组选择器
分组选择器选取所有具有相同样式定义的 HTML 元素。
如需对选择器进行分组,请用逗号来分隔每个选择器。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/* 下面的 CSS 代码(h1、h2 和 p 元素具有相同的样式定义): */
h1 {
text-align: center;
color: red;
}
h2 {
text-align: center;
color: red;
}
p {
text-align: center;
color: red;
}
/* 分组后: */
h1, h2, p {
text-align: center;
color: red;
}
CSS 组合选择器
CSS 选择器可以包含多个简单选择器。在简单选择器之间,我们可以包含一个组合器。
CSS 中有四种不同的组合器:
- 后代选择器 (
空格
) - 子选择器 (
>
) - 相邻兄弟选择器 (
+
) - 通用兄弟选择器 (
~
)
选择器 | 实例 | 实例描述 |
---|---|---|
elementelement | div p | 选择 <div> 元素内的所有 <p> 元素。 |
element>element | div > p | 选择其父元素是 <div> 元素的所有 <p> 元素。 |
element+element | div + p | 选择所有紧随 <div> 元素之后的 <p> 元素。 |
element1~element2 | p ~ ul | 选择前面有 <p> 元素的每个 <ul> 元素。 |
后代选择器 空格
后代选择器匹配属于指定元素后代的所有元素。
示例:选择 <div>
元素内的所有 <p>
元素:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<!DOCTYPE html>
<html>
<head>
<style>
div p {
background-color: yellow;
}
</style>
</head>
<body>
<div>
<p>div 中的第 1 段。</p>
<p>div 中的第 2 段。</p>
<section><p>div 中的第 3 段。</p></section>
</div>
<p>第 4 段。不在 div 中。</p>
<p>第 5 段。不在 div 中。</p>
</body>
</html>
子选择器 >
子选择器匹配属于指定元素子元素的所有元素。
示例:子选择属于 <div>
元素子元素的所有 <p>
元素:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<!DOCTYPE html>
<html>
<head>
<style>
div > p {
background-color: yellow;
}
</style>
</head>
<body>
<div>
<p>div 中的第 1 段。</p>
<p>div 中的第 2 段。</p>
<section><p>div 中的第 3 段。</p></section> <!-- not Child but Descendant -->
<p>div 中的第 4 段。</p>
</div>
<p>第 5 段。不在 div 中。</p>
<p>第 6 段。不在 div 中。</p>
</body>
</html>
相邻兄弟选择器 +
相邻兄弟选择器匹配所有作为指定元素的相邻同级的元素。
兄弟(同级)元素必须具有相同的父元素,” 相邻 “ 的意思是 “ 紧随其后 “。
示例:选择紧随 <div>
元素之后的所有 <p>
元素:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<!DOCTYPE html>
<html>
<head>
<style>
div + p {
background-color: yellow;
}
</style>
</head>
<body>
<div>
<p>div 中的第 1 段。</p>
<p>div 中的第 2 段。</p>
</div>
<p>第 3 段。不在 div 中。</p>
<p>第 4 段。不在 div 中。</p>
</body>
</html>
通用兄弟选择器 ~
通用兄弟选择器匹配属于指定元素的同级元素的所有元素。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<!DOCTYPE html>
<html>
<head>
<style>
div ~ p {
background-color: yellow;
}
</style>
</head>
<body>
<p>段落1。</p>
<div>
<p>段落2。</p>
</div>
<p>段落3。</p>
<code>一些代码。</code>
<p>段落4。</p>
</body>
</html>
伪类选择器
什么是伪类?
伪类用于定义元素的特殊状态。
例如,它可以用于:
- 设置鼠标悬停在元素上时的样式
- 为已访问和未访问链接设置不同的样式
- 设置元素获得焦点时的样式
语法
1
2
3
selector:pseudo-class {
property: value;
}
锚伪类
链接能够以不同的方式显示:
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
<!DOCTYPE html>
<html>
<head>
<style>
/* 未访问的链接 */
a:link {
color: red;
}
/* 访问过的链接 */
a:visited {
color: green;
}
/* 鼠标悬停在链接上 */
a:hover {
color: hotpink;
}
/* 选中的链接 */
a:active {
color: blue;
}
</style>
</head>
<body>
<p><b><a href="default.asp" target="_blank">这是一个链接</a></b></p>
<p><b>注意:</b> a:hover 必须在 CSS 定义中的 a:link 和 a:visited 之后才能生效。</p>
<p><b>注意:</b> a:active 必须在 CSS 定义中的 a:hover 之后才能生效。</p>
</body>
</html>
a:hover
必须在 CSS 定义中的a:link
和a:visited
之后,才能生效a:active
必须在 CSS 定义中的a:hover
之后才能生效- 伪类名称对大小写不敏感。
伪类和 CSS 类
伪类可以与 CSS 类结合使用:
示例:当您将鼠标悬停在例子中的链接上时,它会改变颜色:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<!DOCTYPE html>
<html>
<head>
<style>
a.highlight:hover {
color: #ff0000;
}
</style>
</head>
<body>
<p><a class="highlight" href="css_syntax.asp">CSS 语法</a></p>
<p><a href="default.asp">CSS 教程</a></p>
</body>
</html>
悬停在 div 上
在 <div>
元素上使用 :hover 伪类的实例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<!DOCTYPE html>
<html>
<head>
<style>
div {
background-color: green;
color: white;
padding: 25px;
text-align: center;
}
div:hover {
background-color: blue;
}
</style>
</head>
<body>
<p>将鼠标悬停在下面的 div 元素上以更改其背景颜色:</p>
<div>鼠标悬停在我身上</div>
</body>
</html>
简单的工具提示悬停
把鼠标悬停到 <div>
元素以显示 <p>
元素(类似工具提示的效果):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<!DOCTYPE html>
<html>
<head>
<style>
p {
display: none;
background-color: yellow;
padding: 20px;
}
div:hover p {
display: block;
}
</style>
</head>
<body>
<div>将鼠标悬停在我身上以显示 p 元素
<p>田田! 我在这里!</p>
</div>
</body>
</html>
:first-child 伪类
:first-child
伪类与指定的元素匹配:该元素是另一个元素的第一个子元素。
匹配第一个 p 元素
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<!DOCTYPE html>
<html>
<head>
<style>
p:first-child {
color: red;
}
</style>
</head>
<body>
<p>这是一些文字。</p>
<p>这是一些文字。</p>
<p><b>注意:</b>要使 :first-child 在 IE8 及更早版本中工作,必须声明 DOCTYPE。</p>
</body>
</html>
匹配所有 p 元素中的首个 i 元素
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<!DOCTYPE html>
<html>
<head>
<style>
p i:first-child {
color: red;
}
</style>
</head>
<body>
<p>我是一个<i>坚强</i>的人。 我是一个<i>坚强</i>的人。</p>
<p>我是一个<i>坚强</i>的人。 我是一个<i>坚强</i>的人。</p>
<p><b>注意:</b>要使 :first-child 在 IE8 及更早版本中工作,必须声明 DOCTYPE。</p>
</body>
</html>
匹配所有首个 p 元素中的所有 i 元素
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<!DOCTYPE html>
<html>
<head>
<style>
p:first-child i {
color: red;
}
</style>
</head>
<body>
<p>我是一个<i>坚强</i>的人。 我是一个<i>坚强</i>的人。</p>
<p>我是一个<i>坚强</i>的人。 我是一个<i>坚强</i>的人。</p>
<p><b>注意:</b>要使 :first-child 在 IE8 及更早版本中工作,必须声明 DOCTYPE。</p>
</body>
</html>
:lang 伪类
:lang
伪类允许您为不同的语言定义特殊的规则。
示例::lang 为属性为 lang=”no” 的 <q>
元素定义引号:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<!DOCTYPE html>
<html>
<head>
<style>
q:lang(no) {
quotes: "~" "~";
}
</style>
</head>
<body>
<p>一些文本 <q lang="no">段落中的引用</q> 一些文本。</p>
<p>在这个例子中,:lang 为 lang="no" 的 q 个元素定义了引号:</p>
<p><b>注意:</b> IE8 仅在指定了 !DOCTYPE 时才支持 :lang 伪类。</p>
</body>
</html>
伪元素选择器
CSS 如何使用
有三种插入样式表的方法:
- 外部 CSS
- 内部 CSS
- 行内 CSS
外部 CSS (推荐)
每张 HTML 页面必须在 head 部分的 <link>
元素内包含对外部样式表文件的引用。
1
2
3
4
5
6
7
8
9
10
11
12
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="mystyle.css">
</head>
<body>
<h1>这是一个标题</h1>
<p>这是一个段落。</p>
</body>
</html>
mystyle.css:
1
2
3
4
5
6
7
8
body {
background-color: lightblue;
}
h1 {
color: navy;
margin-left: 20px;
}
注意:请勿在属性值和单位之间添加空格(例如 margin-left: 20 px;
)。正确的写法是:margin-left: 20px;
内部 CSS
内部样式是在 head 部分的 <style>
元素中进行定义。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<!DOCTYPE html>
<html>
<head>
<style>
body {
background-color: linen;
}
h1 {
color: maroon;
margin-left: 40px;
}
</style>
</head>
<body>
<h1>This is a heading</h1>
<p>这是一个段落。</p>
</body>
</html>
行内 CSS
行内样式(也称内联样式)可用于为单个元素应用唯一的样式。
如需使用行内样式,请将 style 属性添加到相关元素。style 属性可包含任何 CSS 属性。
1
2
3
4
5
6
7
8
9
!DOCTYPE html>
<html>
<body>
<h1 style="color:blue;text-align:center;">This is a heading</h1>
<p style="color:red;">这是一个段落。</p>
</body>
</html>
当为某个 HTML 元素指定了多个样式时,会使用哪种样式呢?
页面中的所有样式将按照以下规则 “ 层叠 “ 为新的 “ 虚拟 “ 样式表,其中第一优先级最高:
- 行内样式(在 HTML 元素中)
- 外部和内部样式表(在 head 部分);相同的最后的覆盖前面的
- 浏览器默认样式
因此,行内样式具有最高优先级,并且将覆盖外部和内部样式以及浏览器默认样式。