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