伪元素的作用是在不添加任何html代码的情况下可以拥有添加额外的元素的功能,或者是指定某个目标元素。你可以在本节学习伪元素的相关知识。
如果你的上司安排给你一个任务,将一篇文章的每个段落的首字母变大,你将如何实现这个功能呢?
幸运的是,css恰好提供了这个功能。你可以使用::first-letter实现这个需求。
::first-letter
p::first-letter { color: blue; float: left; font-size: 2.6em; font-weight: bold; line-height: 1; margin-inline-end: 0.2rem; }
上面的codepen代码,使用了::first-letter伪元素,轻松的实现了上司的需求。CSS拥有很多伪元素,它们都是以::开头的格式,接下来一起看下这些伪元素。
::
::before
::after
::before和::after这两个伪元素的功能是配合content属性在目标元素内部创建一个子元素,::before在目标元素头部创建一个元素,::after在目标元素尾部创建一个元素。
content
.ele::before { content: ""; } .ele::after { content: ""; }
一旦你使用::before和::after创建了伪元素,你可以给这个元素添加样式。但是记住你只能在可以拥有子元素的元素目标上使用::before和::after创建伪元素,例如::before和::after对<img />和<video>等无效。
<img />
<video>
在文章最前面,我们使用::first-letter伪元素完成了上司给我们安排的任务。与::before和::after不同的是,::first-letter并不会创建一个元素,它指示了目标元素内部的首字母,通过::first-letter,我们可以为目标元素的首字母单独设置样式,就像我们使用::first-letter更改段落的首字母的font-size。
font-size
但是并不是所有css属性都可以设置,仅可以更改::first-letter指示目标的以下属性:
color
background
background-image
background-color
border
border-color
float
font
font-weight
text-decoration
word-spacing
p::first-letter { color: goldenrod; font-weight: bold; }
::first-line
顾名思义,::first-line指示目标的首行。例如p::first-line的指示目标是段落的首行。
p::first-line
p::first-line { color: red; font-weight: bold; }
和::first-letter类似,我们只可以更改部分css属性:
text
::backdrop
backdrop表示背景幕布的意思。::backdrop指示的就是可全屏元素的背景元素,通过::backdrop可以设置全屏元素背景的样式。可全屏元素有<dialog>和<video>。
<dialog>
看一个例子,感受下::backdrop的作用。
通过::backdrop,将dialog弹出时的背景颜色更改为rgba(100, 10, 10, 0.7);。
rgba(100, 10, 10, 0.7);
::marker
::marker可以用来修改某些元素的标记符号样式,例如<ul>和<ol>列表项前面的点和数字,也可以更改<summary>前面的内容。
<ul>
<ol>
<summary>
可支持::marker修改的css属性有:
white-space
animation
transition
::selection
::selection允许你修改选中的文本样式。
::selection { background: green; color: white; }
::selection支持修改的css属性有:
::placeholder
在使用<input>元素时,通常会添加一个placeholder属性提示用户输入。::placeholder伪元素用于更改提示文字(placeholder)的样式。
<input>
placeholder
支持修改的css属性如下:
(完)
Copyright© 2013-2020
All Rights Reserved 京ICP备2023019179号-8