搜索
首页web前端css教程ATOZ CSS屏幕截图:CSS伪元素

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
揭开屏幕读取器的神秘面纱:可访问的表格和最佳实践揭开屏幕读取器的神秘面纱:可访问的表格和最佳实践Mar 08, 2025 am 09:45 AM

这是我们在形式可访问性上进行的小型系列中的第三篇文章。如果您错过了第二篇文章,请查看“以:focus-visible的管理用户焦点”。在

使用智能表单框架创建JavaScript联系表格使用智能表单框架创建JavaScript联系表格Mar 07, 2025 am 11:33 AM

本教程演示了使用智能表单框架创建外观专业的JavaScript表单(注意:不再可用)。 尽管框架本身不可用,但原理和技术仍然与其他形式的建筑商相关。

将框阴影添加到WordPress块和元素将框阴影添加到WordPress块和元素Mar 09, 2025 pm 12:53 PM

CSS盒子阴影和轮廓属性获得了主题。让我们查看一些在真实主题中起作用的示例,以及我们必须将这些样式应用于WordPress块和元素的选项。

使用GraphQL缓存使用GraphQL缓存Mar 19, 2025 am 09:36 AM

如果您最近开始使用GraphQL或审查了其优点和缺点,那么您毫无疑问听到了诸如“ GraphQl不支持缓存”或

使您的第一个自定义苗条过渡使您的第一个自定义苗条过渡Mar 15, 2025 am 11:08 AM

Svelte Transition API提供了一种使组件输入或离开文档(包括自定义Svelte Transitions)时动画组件的方法。

展示,不要说展示,不要说Mar 16, 2025 am 11:49 AM

您花多少时间为网站设计内容演示文稿?当您撰写新的博客文章或创建新页面时,您是在考虑

优雅且酷的自定义CSS卷轴:展示柜优雅且酷的自定义CSS卷轴:展示柜Mar 10, 2025 am 11:37 AM

在本文中,我们将深入研究滚动条。我知道,这听起来并不魅力,但请相信我,一个精心设计的页面是齐头并进的

NPM命令是什么?NPM命令是什么?Mar 15, 2025 am 11:36 AM

NPM命令为您运行各种任务,无论是一次性或连续运行的过程,例如启动服务器或编译代码。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热工具

螳螂BT

螳螂BT

Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器

Dreamweaver Mac版

Dreamweaver Mac版

视觉化网页开发工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!