伪元素选择器和伪类选择器

相信大家在学习css选择器的时候经常会遇到一个问题就是伪类和伪元素傻傻分不清楚

其实最简单的分辨方式就是看有几个冒号伪类是一个冒号,而伪元素则用两个冒号来表示。

常见的伪类选择器

伪类表示已存在的某个元素处于某种状态,但是通过dom树又无法表示这种状态,就可以通过伪类来为其添加样式。例如a元素的:hover, :active等。CSS3中建议使用:表示伪元素,如:a:hover

:focus
/* 伪类将应用于拥有键盘输入焦点的元素。 */
a:hover
/* 鼠标经过触发。 */
a:link 
/* 未访问的链接 */
a:visited 
/* 已访问的链接 */
a:active
 /* 已选中的链接 */
a:nth-child(n)
 /* 选择所有a元素的父元素的第n个子元素*/

注意伪类选择器仅仅只是选出DOM中已经存在的元素,并不会改变代码的结构

常见的伪元素选择器

伪元素主要是用来创建一些不存在原有dom结构树种的元素,例如:用::before和::after在一些存在的元素前后添加文字样式等,这些被添加的内容会以具体的UI显示出来,被用户所看到的,这些内容不会改变文档的内容,不会出现在DOM中,不可复制,仅仅是在CSS渲染层加入。CSS3中建议使用::表示伪元素,如:div::before。

a::before
/* before" 伪元素可以在元素的内容前面插入新内容 */
a::after
/* after" 伪元素可以在元素的内容后面插入新内容 */

::before和::after这两个伪类下有特有的属性content,必须有这个属性。

总之,伪元素的操作对象是新生成的dom元素,而不是原来dom结构里就存在的;而伪类恰好相反,伪类的操作对象是原来的dom结构里就存在的元素。

伪元素与伪类的根本区别在于:操作的对象元素是否存在于原来的dom结构里。

猜你喜欢

转载自blog.csdn.net/weixin_48549175/article/details/109682231