css3伪类和伪元素是什么意思
在css3中,伪类是一种用于已有元素处于某种状态时为其添加对应样式的选择器,且这个状态是根据用户行为而动态变化的;而伪元素的意思为"假元素"或者"伪装元素",是一个用于创建一些不在DOM树中的元素,并为其添加样式的选择器。
本教程操作环境:windows7系统、CSS3&&HTML5版、Dell G3电脑。
伪类是什么
伪类是一种用于已有元素处于某种状态时(滑动、点击等)为其添加对应样式的选择器,且这个状态是根据用户行为而动态变化的。
例如:当用户悬停在指定元素时,可以通过:hover来描述这个元素的状态,虽然它和一般css相似,可以为已有元素添加样式,但是它只有处于DOM树无法描述的状态下才能为元素添加样式,所以称为伪类。
伪元素是什么
伪元素直义理解就是"假元素"或者"伪装元素"。其实也可以这么理解, 伪元素实际上就是虚拟的元素,不存在的元素(code形式), 你也无发在文档中找到他们,因此说伪元素是虚拟元素。
伪元素是一个用于创建一些不在DOM树中的元素,并为其添加样式的选择器。
通过伪元素您不需要借助元素的 ID 或 class 属性就可以对被选择元素的特定部分定义样式。例如通过伪元素您可以设置段落中第一个字母的样式,或者在元素之前、之后插入一些内容等等。
伪类和伪元素的区别:
请看下面例子:
例一:
<ul> <li>第一列</li> <li>第二列</li> </ul>
如果我们想要给第一列添加样式,我们可以通过以下两种方式:
(1)给第一列添加一个类,并在该类中定义样式:
<ul> <li class="first-item">第一列</li> <li>第二列</li></ul> </ul>
.first-item{color:orange;}
(2)如果不用添加类的方法,我们可以通过给第一个<li>设置:first-child伪类来为其添加样式,这时,被修饰的li依然存在于DOM树中
<ul> <li>第一个</li> <li>第二个</li> </ul>
li:first-child{color:orage;}
例二:
<p>Hello World, and wish you have a good day!</p>
想要给该段落第一个字母添加样式,可以有以下方法:
(1)給第一个字母包裹<span>元素,并给span设置样式:
<p> <span class="first">H</span>ello World, and wish you have a good day! </p>
.first{color:red;}
(2)如果不创建<span>元素,我们可以通过给<p>元素设置P:first-letter伪元素为其添加样式,这时看起来像创建了一个虚拟的span元素并为其添加样式,但实际上在DOM数中并不存在这个span元素
<p>Hello World, and wish you have a good day!</p>
p:first-letter{color:red;}
从上述例子中我们可以看出:伪类的操作对象是文档树中已有的元素,而伪元素则创建了一个文档树外的元素。因此,伪类与伪元素的区别在于:有没有创建一个文档树之外的元素。
伪元素使用单冒号还是双冒号?
css3规范中要求使用双冒号(::
)表示伪元素,以此来区分伪类和伪元素,比如::before和::after等伪元素使用双冒号(::
),:hover
和:active
伪类使用单冒号(:
)。除了一些低于IE8版本的浏览器外,大部分浏览器都支持伪元素的双冒号(::
)表示方法。
然而除了少部分伪元素如::backdrop必须使用双冒号(::
),大部分伪元素都支持单冒号和双冒号的写法,比如::after
,写成:after
一样可以正常运行。
w3c标准中说到,虽然CSS3标准要求伪元素使用双冒号的写法,但也依然支持单冒号的写法。为了向后兼容,我们建议你在目前还是使用单冒号的写法。
常用伪类有:
:active 选择正在被激活的元素(匹配指定状态)
:hover 选择被鼠标悬浮着的元素(匹配指定状态)
:link 选择未被访问的元素 (匹配指定状态)
:visited 选择已被访问的元素(匹配指定状态)
:first-child 选择满足是其父元素的第一个子元素的元素
:lang(value) 选择带有指定 lang 属性的元素
:focus 选择拥有键盘输入焦点的元素
:enable 选择每个已启动的元素
:disable 选择每个已禁止的元素
:checked 选择每个被选中的元素
:target 选择当前的锚点元素
:first-of-type 选择满足是其父元素的第一个某类型子元素的元素
:last-of-type 选择满足是其父元素的最后一个某类型子元素的元素
:only-of-type 选择满足是其父元素的唯一一个某类型子元素的元素
:nth-of-type(n) 选择满足是其父元素的第n个某类型子元素的元素
:nth-last-of-type(n) 选择满足是其父元素的倒数第n个某类型的元素
:only-child 选择满足是其父元素的唯一一个子元素的元素
:last-child 选择满足是其父元素的最后一个元素的元素
:nth-child(n) 选择满足是其父元素的第n个子元素的元素
:nth-last-child(n) 选择满足是其父元素的倒数第n个子元素的元素
:empty 选择满足没有子元素的元素
:in-range 选择满足值在指定范围内的元素
:out-of-range 选择值不在指定范围内的元素
:invalid 选择满足值为无效值的元素
:valid 选择满足值为有效值的元素
:not(selector) 选择不满足selector的元素
:optional 选择为可选项的表单元素,即没有“required”属性
:read-only 选择有"readonly"的表单元素
:read-write 选择没有"readonly"的表单元素
:root 选择根元素
常用伪元素
::first-letter 选择指定元素的第一个单词
::first-line 选择指定元素的第一行
::after 在指定元素的内容前面插入内容
::before 在指定元素的内容后面插入内容
::selection 选择指定元素中被用户选中的内容
(学习视频分享:css视频教程)
以上就是css3伪类和伪元素是什么意思的详细内容,更多请关注其它相关文章!