一、伪类
对于特定状态的理解案例
请注意作用对象,伪类只是添加描述,样式作用对象不变
/* 如下表示选择一个a标签,并且此时鼠标悬浮在标签上 */
a:hover{}
/* 如下表示选择一个a标签,并且该a标签的跳转地址已经被访问 */
a:visited{}
/* 如下表示选择一个a标签,首先其跳转地址已被访问,再来此时鼠标悬浮在标签上 */
a:visited:hover{}
常见伪类
:hover,:first-child,:first-of-type,:nth-child(),:not(),:has()
等等
二、伪元素
伪元素是用于选择不存在于DOM的虚拟元素(该元素浏览器会自动创建,且不存在于DOM中)
其语法结构以::
开头(此处由于历史原因,单冒号也行,但实际上是浏览器会帮你补全为双冒号)
对于虚拟元素的理解案例
请注意作用对象,伪元素会改变样式的作用对象
/* 如下表示选择一个p标签文本的第一个字符 */
p::first-letter{}
/* 如下表示创建并选择p标签后的after伪元素 */
p::after{}
常用伪元素
::before,::after
等等