伪类用于定义元素的特殊状态。
例如,它可以用于:
- 设置鼠标悬停在元素上时的样式
- 为已访问和未访问链接设置不同的样式
- 设置元素获得焦点时的样式
- 等等
伪类的语法:
selector:pseudo-class {
property: value;
}
1. 锚伪类
链接能够以不同的方式显示:
/* 未访问的链接 */
a:link {
color: #FF0000;
}
/* 已访问的链接 */
a:visited {
color: #00FF00;
}
/* 鼠标悬停链接 */
a:hover {
color: #FF00FF;
}
/* 已选择的链接 */
a:active {
color: #0000FF;
}
注意:a:hover 必须在 CSS 定义中的 a:link 和 a:visited 之后,才能生效!a:active 必须在 CSS 定义中的 a:hover 之后才能生效!伪类名称对大小写不敏感。
2. 伪类和 CSS 类
伪类可以与 CSS 类结合使用:
当您将鼠标悬停在例子中的链接上时,它会改变颜色:
a.highlight:hover {
color: #ff0000;
}
3. 悬停在 <div>
上
在 <div>
元素上使用 :hover 伪类的实例:
div:hover {
background-color: blue;
}
3. 简单的工具提示悬停
把鼠标悬停到 <div>
元素以显示 <p>
元素(类似工具提示的效果):
<div>鼠标移到我上面来显示 p 元素
<p>哈哈!我在这里!</p>
</div>
p {
display: none;
background-color: yellow;
padding: 20px;
}
div:hover p {
display: block;
}
效果展示:
移动前:
移动后:
4. CSS - :first-child 伪类
(1):first-child 伪类与指定的元素匹配:该元素是另一个元素的第一个子元素。
在下面的例子中,选择器匹配作为任何元素的第一个子元素的任何 <p>
元素:
<p>这是一段文本。</p>
<p>这是一段文本。</p>
p:first-child {
color: blue;
}
效果如下:
(2)匹配所有 <p>
元素中的首个 <i>
元素
在下面的例子中,选择器匹配所有 <p>
元素中的第一个 <i>
元素:
<p>我是一个<i>强壮</i>的男人。我是一个<i>强壮</i>的男人。</p>
<p>我是一个<i>强壮</i>的男人。我是一个<i>强壮</i>的男人。</p>
p i:first-child {
color: blue;
}
效果如下:
(3)匹配所有首个 <p>
元素中的所有 <i>
元素
在下面的例子中,选择器匹配作为另一个元素的第一个子元素的 <p>
元素中的所有 <i>
元素:
<p>我是一个<i>强壮</i>的男人。我是一个<i>强壮</i>的男人。</p>
<p>我是一个<i>强壮</i>的男人。我是一个<i>强壮</i>的男人。</p>
p:first-child i {
color: blue;
}
效果如下:
5. CSS - :lang 伪类
:lang 伪类允许您为不同的语言定义特殊的规则。
在下面的例子中,:lang 为属性为 lang=“en” 的 <q>
元素定义引号:
<p>Some text <q lang="en">A quote in a paragraph</q> Some text.</p>
<p>在本例中,:lang 为 lang="en" 的 q 元素定义引号:</p>
q:lang(en) {
quotes: "~" "~";
}
效果如下:
七、伪元素
CSS 伪元素用于设置元素指定部分的样式。
例如,它可用于:
- 设置元素的首字母、首行的样式
- 在元素的内容之前或之后插入内容
语法
伪元素的语法:
selector::pseudo-element {
property: value;
}
1. ::first-line 伪元素
::first-line 伪元素用于向文本的首行添加特殊样式。
下面的例子为所有 <p>
元素中的首行添加样式:
<p>您可以使用 ::first-line 伪元素将特殊效果添加到文本的第一行。一些更多的文字。越来越多,越来越多,越来越多,越来越多,越来越多,越来越多,越来越多,越来越多,越来越多,越来越多。</p>
<p>您可以使用 ::first-line 伪元素将特殊效果添加到文本的第一行。一些更多的文字。越来越多,越来越多,越来越多,越来越多,越来越多,越来越多,越来越多,越来越多,越来越多,越来越多。</p>
p::first-line {
color: #ff0000;
font-variant: small-caps;
}
效果如下:
注意:::first-line 伪元素只能应用于块级元素
2. ::first-letter 伪元素
::first-letter 伪元素用于向文本的首字母添加特殊样式。
下面的例子设置所有 <p>
元素中文本的首字母格式:
<p>您可以使用 ::first-letter 伪元素为文本的第一个字符添加特殊效果!</p>
p::first-letter {
color: #ff0000;
font-size: xx-large;
}
效果如下:
注意:::first-letter 伪元素只适用于块级元素。
3. 伪元素和 CSS 类
伪元素可以与 CSS 类结合使用:
<p class="intro">这是一段简介!</p>
<p>这是一段文字。以及更多的文字。</p>
p.intro::first-letter {
color: #ff0000;
font-size: 200%;
}
效果如下:
4. 多个伪元素
也可以组合几个伪元素。
在下面的例子中,段落的第一个字母将是红色,字体大小为 xx-large。第一行的其余部分将变为蓝色,并使用小型大写字母。该段的其余部分将是默认的字体大小和颜色:
<p>您可以结合 ::first-letter 和 ::first-line 伪元素来为文本的首字母和首行添加特殊效果!</p>
p::first-letter {
color: #ff0000;
font-size: xx-large;
}
p::first-line {
color: #0000ff;
font-variant: small-caps;
}
效果如下:
5. CSS - ::before 伪元素
::before 伪元素可用于在元素内容之前插入一些内容。
下面的例子在每个
元素的内容之前插入一幅图像:
<h1>这是一个标题</h1>
<p>::before 伪元素在一个元素的内容之前插入内容。</p>
<h1>这是一个标题</h1>
h1::before {
content: url(img/icon1.jpg);
}
效果如下:
6. CSS - ::after 伪元素
::after 伪元素可用于在元素内容之后插入一些内容。
下面的例子在每个
元素的内容之后插入一幅图像:
<h1>这是一个标题</h1>
<p>::after 伪元素在一个元素之后插入内容。</p>
<h1>这是一个标题</h1>
h1::after {
content: url(img/icon1.jpg);
}
效果如下:
7. CSS - ::selection 伪元素
::selection 伪元素匹配用户选择的元素部分。
以下 CSS 属性可以应用于 ::selection:
color
background
cursor
outline
下例使所选文本在黄色背景上显示为红色:
<h1>请选择本页中的文本:</h1>
<p>这是一个段落。</p>
<div>这是 div 元素中的文本。</div>
::selection {
color: red;
background: yellow;
}
选中前:
选中后: