搜索
首页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
CSS Flexbox与网格:全面评论CSS Flexbox与网格:全面评论May 12, 2025 am 12:01 AM

选择Flexbox还是Grid取决于布局需求:1)Flexbox适用于一维布局,如导航栏;2)Grid适合二维布局,如杂志式布局。两者在项目中可结合使用,提升布局效果。

如何包括CSS文件:方法和最佳实践如何包括CSS文件:方法和最佳实践May 11, 2025 am 12:02 AM

包含CSS文件的最佳方法是使用标签在HTML的部分引入外部CSS文件。1.使用标签引入外部CSS文件,如。2.对于小型调整,可以使用内联CSS,但应谨慎使用。3.大型项目可使用CSS预处理器如Sass或Less,通过@import导入其他CSS文件。4.为了性能,应合并CSS文件并使用CDN,同时使用工具如CSSNano进行压缩。

Flexbox vs Grid:我应该学习两者吗?Flexbox vs Grid:我应该学习两者吗?May 10, 2025 am 12:01 AM

是的,youshouldlearnbothflexboxandgrid.1)flexboxisidealforone-demensional,flexiblelayoutslikenavigationmenus.2)gridexcelstcelsintwo-dimensional,confffferDesignssignssuchasmagagazineLayouts.3)blosebothenHancesSunHanceSlineHancesLayOutflexibilitibilitibilitibilitibilityAnderibilitibilityAndresponScormentilial anderingStruction

轨道力学(或我如何优化CSS KeyFrames动画)轨道力学(或我如何优化CSS KeyFrames动画)May 09, 2025 am 09:57 AM

重构自己的代码看起来是什么样的?约翰·瑞亚(John Rhea)挑选了他写的一个旧的CSS动画,并介绍了优化它的思维过程。

CSS动画:很难创建它们吗?CSS动画:很难创建它们吗?May 09, 2025 am 12:03 AM

CSSanimationsarenotinherentlyhardbutrequirepracticeandunderstandingofCSSpropertiesandtimingfunctions.1)Startwithsimpleanimationslikescalingabuttononhoverusingkeyframes.2)Useeasingfunctionslikecubic-bezierfornaturaleffects,suchasabounceanimation.3)For

@KeyFrames CSS:最常用的技巧@KeyFrames CSS:最常用的技巧May 08, 2025 am 12:13 AM

@keyframesispopularduetoitsversatoryand and powerincreatingsmoothcssanimations.keytricksinclude:1)definingsmoothtransitionsbetnestates,2)使用AnimatingmatematingmultationmatingMultationPropertiessimultane,3)使用使用4)使用BombingeNtibalibility,4)使用BombingingWithjavofofofofofoffo

CSS计数器:自动编号的综合指南CSS计数器:自动编号的综合指南May 07, 2025 pm 03:45 PM

CSSCOUNTERSAREDOMANAGEAUTOMANAMBERINGINWEBDESIGNS.1)他们可以使用forterablesofcontents,ListItems,and customnumbering.2)AdvancedsincludenestednumberingSystems.3)挑战挑战InclassINCludeBrowsEccerCerceribaliblesibility andperformiballibility andperformissises.4)创造性

使用卷轴驱动动画的现代滚动阴影使用卷轴驱动动画的现代滚动阴影May 07, 2025 am 10:34 AM

使用滚动阴影,尤其是对于移动设备,是克里斯以前涵盖的一个微妙的UX。杰夫(Geoff)涵盖了一种使用动画限制属性的新方法。这是另一种方式。

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脱衣机

Video Face Swap

Video Face Swap

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

热门文章

热工具

SecLists

SecLists

SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

Dreamweaver Mac版

Dreamweaver Mac版

视觉化网页开发工具

MinGW - 适用于 Windows 的极简 GNU

MinGW - 适用于 Windows 的极简 GNU

这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

SublimeText3 英文版

SublimeText3 英文版

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

WebStorm Mac版

WebStorm Mac版

好用的JavaScript开发工具