目录
CSS伪元素有哪些不同类型?
如何使用::before::after伪元素?
我可以使用伪元素设置表单输入的样式吗?
如何使用伪元素设置段落首字母的样式?
我可以在同一个元素上使用多个伪元素吗?
所有浏览器都支持伪元素吗?
伪元素和伪类有什么区别?
我可以将伪元素与JavaScript一起使用吗?
如何使用::selection伪元素?
我可以为伪元素设置动画吗?
首页 web前端 css教程 ATOZ CSS屏幕截图:CSS伪元素

ATOZ CSS屏幕截图:CSS伪元素

Feb 20, 2025 am 08:26 AM

AtoZ CSS Screencast: CSS Pseudo Elements

核心要点

  • CSS伪元素是页面上并非HTML代码中存在的元素,它们可以使用任何应用于其他元素的CSS样式进行操作。
  • CSS中的:before:after伪元素可用于生成页面内容,包括文本、图像、属性值和计数器。它们还可用于创建具有最少标记的复杂形状。
  • CSS中的各种伪元素包括:first-line:first-letter:selection:before:after。这些可用于设置元素特定部分的样式,在元素内容前后插入内容,以及设置块级元素的首字母或首行样式等等。

视频讲解 (加载播放器中……) 本视频是AtoZ CSS系列的一部分。您可以在此处找到该系列的其他内容。

文字记录

CSS伪元素是页面上不在HTML代码中出现的元素。

它们可以使用应用于任何其他元素的任何CSS样式进行操作。

两个特殊的伪元素——:before:after——可用于从CSS生成页面内容,并具有许多潜在的用例。

在本节中,我们将学习:

  • 五种不同的伪元素
  • 从CSS生成文本、图像属性值和计数器等内容
  • 如何使用最少的标记创建复杂的形状

伪元素

CSS中有五个伪元素:

  • :first-line
  • :first-letter
  • :selection
  • :before
  • :after

这些与伪类通过双冒号区分,但为了简洁起见,通常在CSS中使用单冒号编写。

这里有一段很长的占位符文本块引用。我可以使用:first-line更改文本首行的颜色,即使文本重新调整格式后也适用。我可以通过使用浮动和更大的字体大小设置:first-letter的样式来创建一个首字母大写效果。我还可以使用:selection更改所选文本的颜色。

我可以使用:before:after伪元素在块引用前后添加大引号。文本从content属性生成,然后可以使用CSS样式来获得所需的效果。

blockquote {
  position: relative;
  border-left: 5px solid #66d9ef;   
  padding: 1em 1em 1em 2em;
}
blockquote p:first-line {
  color: #cc3f85;
}
blockquote p:first-letter {
  float: left;
  font-size: 4em;
  margin-right: 0.5em;
}
::selection {
  background: #cc3f85;
  color: #fff;
}
blockquote:before {
  content: "“";
  position: absolute;
  top: 0;
  left: -0.6em;
  font-size: 8em;
  font-family: Georgia;
}
blockquote:after {
  content: "”";
  bottom: -0.25em;
  right: -0.5em;
  line-height: 1rem;    
}
blockquote:before,
blockquote:after {
  position: absolute;
  color: #66d9ef;
  font-size: 8em;
  font-family: Georgia;
}
登录后复制
登录后复制
登录后复制
登录后复制

生成内容

使用:before:after伪元素允许我们向页面添加各种不同的内容。

我们已经看到如何向页面添加文本内容,但我们也可以添加图像、属性值、计数器或空字符串,只需访问这两个额外的元素即可。

添加图像类似于使用url()添加背景图像。在这里,使用url()作为content属性的值。我实际上更喜欢使用背景图像,并通过为content创建空字符串来访问伪元素。这提供了对图像的更多控制,因为所有常用的属性(如background-positionbackground-repeatbackground-size)都可用。

blockquote {
  position: relative;
  border-left: 5px solid #66d9ef;   
  padding: 1em 1em 1em 2em;
}
blockquote p:first-line {
  color: #cc3f85;
}
blockquote p:first-letter {
  float: left;
  font-size: 4em;
  margin-right: 0.5em;
}
::selection {
  background: #cc3f85;
  color: #fff;
}
blockquote:before {
  content: "“";
  position: absolute;
  top: 0;
  left: -0.6em;
  font-size: 8em;
  font-family: Georgia;
}
blockquote:after {
  content: "”";
  bottom: -0.25em;
  right: -0.5em;
  line-height: 1rem;    
}
blockquote:before,
blockquote:after {
  position: absolute;
  color: #66d9ef;
  font-size: 8em;
  font-family: Georgia;
}
登录后复制
登录后复制
登录后复制
登录后复制

也可以使用content属性将HTML属性的值注入页面。在创建打印样式表时,我喜欢添加以下代码片段以输出链接的URL,以便可以从页面读取它们:

li:before {
  content: url(star.png);
  display: inline-block;
  vertical-align: middle;
  margin-right: 0.5em;
}
登录后复制
登录后复制

这将为任何不是内部链接或哈希链接的链接在链接文本后添加链接。

生成内容的最后一个特例是插入计数器变量的值。我过去发现这对于对复杂的法律条款和条件列表进行编号非常有用。

这里有一系列标题,下面有一系列嵌套列表。我希望每个章节标题都有一个编号,每个列表项都作为每个章节的子项编号。

对于每个h2,我将递增一个“section”计数器;对于每个列表项,我将递增一个“item”计数器。在每个章节标题之前,我将输出章节计数器的值;在每个列表项之前,我将输出项目计数器的值。可以在计数器之间添加额外的字符串以创建复杂的编号系统。此方法的简化形式可用于控制列表中数字或项目符号的样式。

a[href]:not([href*="#"]):after {
  content: attr(href);
}
登录后复制
登录后复制

形状

由于页面上的每个元素都可以有两个“额外”元素,并且可以根据我们的喜好设置样式,因此可以创建各种复杂的形状。

在思考演示示例时,我看到了CSS-Tricks上形状的参考;其中一个非常突出,我将逐步介绍其工作原理。让我们用单个元素制作阴阳符号。

h2 {counter-increment: section;}
ul {counter-reset: item;}
li {counter-increment: item;}

h2:before {
  content: counter(section) " - ";
}
li:before {
  content: counter(section) "." counter(item);
}
登录后复制

从方框开始,可以使用border-radius将其转换为圆形。可以使用等于圆形高度的border-bottom创建两个彩色半圆形。两个点是通过创建两个带有伪元素的圆圈并使用position:absolute放置它们来创建的。使用与半圆颜色匹配的边框,可以创建符号的两个圆形端点。如果您问我,这很酷。

我很喜欢使用伪元素;您可以用它们做很多事情,并向页面添加各种视觉效果,而不会使标记混乱。

关于CSS伪元素的常见问题

CSS伪元素有哪些不同类型?

CSS伪元素用于设置元素特定部分的样式。有几种类型的伪元素,包括::before::after::first-letter::first-line::selection::backdrop::placeholder。每个伪元素都针对元素的不同部分。例如,::before::after用于在元素内容前后插入内容,而::first-letter::first-line用于设置块级元素的首字母或首行的样式。

如何使用::before::after伪元素?

::before::after伪元素用于在元素内容前后插入内容。它们通常用于装饰目的,例如添加图标或引号。要使用这些伪元素,需要指定content属性。例如,要在段落前面添加心形图标,可以使用以下代码:

blockquote {
  position: relative;
  border-left: 5px solid #66d9ef;   
  padding: 1em 1em 1em 2em;
}
blockquote p:first-line {
  color: #cc3f85;
}
blockquote p:first-letter {
  float: left;
  font-size: 4em;
  margin-right: 0.5em;
}
::selection {
  background: #cc3f85;
  color: #fff;
}
blockquote:before {
  content: "“";
  position: absolute;
  top: 0;
  left: -0.6em;
  font-size: 8em;
  font-family: Georgia;
}
blockquote:after {
  content: "”";
  bottom: -0.25em;
  right: -0.5em;
  line-height: 1rem;    
}
blockquote:before,
blockquote:after {
  position: absolute;
  color: #66d9ef;
  font-size: 8em;
  font-family: Georgia;
}
登录后复制
登录后复制
登录后复制
登录后复制

我可以使用伪元素设置表单输入的样式吗?

是的,您可以使用伪元素设置表单输入的样式。但是,并非所有表单输入都可以使用伪元素设置样式。例如,::placeholder伪元素可用于设置输入字段的占位符文本样式。这是一个示例:

li:before {
  content: url(star.png);
  display: inline-block;
  vertical-align: middle;
  margin-right: 0.5em;
}
登录后复制
登录后复制

如何使用伪元素设置段落首字母的样式?

您可以使用::first-letter伪元素设置块级元素首字母的样式。这通常用于创建首字母大写效果。这是一个示例:

a[href]:not([href*="#"]):after {
  content: attr(href);
}
登录后复制
登录后复制

我可以在同一个元素上使用多个伪元素吗?

是的,您可以在同一个元素上使用多个伪元素。例如,您可以在同一个元素上同时使用::before::after来在其内容前后插入内容。但是,请记住伪元素的顺序很重要。::before伪元素将始终插入在::after伪元素之前。

所有浏览器都支持伪元素吗?

大多数现代浏览器都支持伪元素。但是,某些浏览器的旧版本可能不支持所有伪元素。在使用伪元素之前,最好检查一下浏览器的兼容性。

伪元素和伪类有什么区别?

伪元素和伪类都用于根据某些条件为元素应用样式。但是,它们用于不同的目的。伪类用于在元素处于特定状态时设置其样式,例如当鼠标悬停在其上或获得焦点时。另一方面,伪元素用于设置元素特定部分的样式。

我可以将伪元素与JavaScript一起使用吗?

伪元素不是DOM的一部分,因此无法使用JavaScript直接访问或操作它们。但是,您可以通过使用JavaScript更改父元素的样式来更改应用于伪元素的样式。

如何使用::selection伪元素?

::selection伪元素用于更改用户所选文本的外观。例如,您可以更改所选文本的背景颜色和文本颜色。这是一个示例:

blockquote {
  position: relative;
  border-left: 5px solid #66d9ef;   
  padding: 1em 1em 1em 2em;
}
blockquote p:first-line {
  color: #cc3f85;
}
blockquote p:first-letter {
  float: left;
  font-size: 4em;
  margin-right: 0.5em;
}
::selection {
  background: #cc3f85;
  color: #fff;
}
blockquote:before {
  content: "“";
  position: absolute;
  top: 0;
  left: -0.6em;
  font-size: 8em;
  font-family: Georgia;
}
blockquote:after {
  content: "”";
  bottom: -0.25em;
  right: -0.5em;
  line-height: 1rem;    
}
blockquote:before,
blockquote:after {
  position: absolute;
  color: #66d9ef;
  font-size: 8em;
  font-family: Georgia;
}
登录后复制
登录后复制
登录后复制
登录后复制

我可以为伪元素设置动画吗?

是的,您可以使用CSS动画或过渡为伪元素设置动画。但是,请记住并非所有属性都可以设置动画。例如,您可以为伪元素的不透明度或变换设置动画,但不能为content属性设置动画。

以上是ATOZ CSS屏幕截图:CSS伪元素的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1664
14
CakePHP 教程
1423
52
Laravel 教程
1317
25
PHP教程
1268
29
C# 教程
1246
24
如何使用HTML,CSS和JavaScript创建动画倒计时计时器 如何使用HTML,CSS和JavaScript创建动画倒计时计时器 Apr 11, 2025 am 11:29 AM

您是否曾经在项目上需要一个倒计时计时器?对于这样的东西,可以自然访问插件,但实际上更多

HTML数据属性指南 HTML数据属性指南 Apr 11, 2025 am 11:50 AM

您想了解的有关HTML,CSS和JavaScript中数据属性的所有信息。

使Sass更快的概念证明 使Sass更快的概念证明 Apr 16, 2025 am 10:38 AM

在一个新项目开始时,Sass汇编发生在眼睛的眨眼中。感觉很棒,尤其是当它与browsersync配对时,它重新加载

当您看上去时,CSS梯度变得更好 当您看上去时,CSS梯度变得更好 Apr 11, 2025 am 09:16 AM

我关注的一件事是Lea Verou' s conic-Gradient()Polyfill的功能列表是最后一项:

静态表单提供商的比较 静态表单提供商的比较 Apr 16, 2025 am 11:20 AM

让我们尝试在这里造成一个术语:“静态表单提供商”。你带上html

如何在WordPress主题中构建VUE组件 如何在WordPress主题中构建VUE组件 Apr 11, 2025 am 11:03 AM

内联式模板指令使我们能够将丰富的VUE组件构建为对现有WordPress标记的逐步增强。

php是A-OK用于模板 php是A-OK用于模板 Apr 11, 2025 am 11:04 AM

PHP模板通常会因促进Subpar代码而变得不良说唱,但这并不是这样的情况。让我们看一下PHP项目如何执行基本的

三种代码 三种代码 Apr 11, 2025 pm 12:02 PM

每次启动一个新项目时,我都会将我正在查看的代码分为三种类型,或者如果您愿意的话。我认为这些类型可以应用于

See all articles