三.CSS选择器面试相关知识点总结

159 阅读2分钟

1.css选择器优先级及权重如何计算?

!imortant > 行内 > 类 > 标签 > 通配符 > 继承 > 浏览器默认

 <!-- 2.选择器的优先级排序

  1.   !important  (最高)在属性后面写上这条样式,会覆盖掉页面上任何位置定义的元素的样式。

  2.   行内样式,在style属性里面写的样式。权重1000

  3.  id选择器,权重100

  4. 类,伪类,属性选择器,权重10                

  5. 标签,伪元素选择器,权重 1

   6. 通配符选择器* ,权重0
     -->
     通配符,子选择器,相邻选择器等权值都为0;
     继承的样式没有权值   
方法:
m = id选择器个数*100,
n = 类,属性,伪类选择器个数*10,
i = 标签,伪元素选择器*1,
m+n+i谁大就用谁的样式,一样则就近原则

2.伪类与伪元素?

伪类和伪元素的根本区别在于:它们是否创造了新的元素。

伪类:本质上是为了弥补常规CSS选择器的不足,以便获取到更多信息;
     用于向某些选择器添加特殊的效果
     
伪元素:本质上是创建了一个有内容的虚拟容器;
       用于将特殊的效果添加到某些选择器
       
伪类只能使用“:”
伪元素既可以使用“:”,也可以使用“::”

因为伪类是类似于添加类所以可以是多个,而伪元素在一个选择器中只能出现一次,并且只能出现在末尾

注意:
伪对象要配合content属性一起使用
伪对象不会出现在DOM中,所以不能通过js来操作,仅仅是在 CSS 渲染层加入
伪对象的特效通常要使用:hover伪类样式来激活

3.常见伪类和伪元素?

1.常用的伪类

:link 未访问的节点,通常用于 a 标签
:visited 已访问的节点,通常用于 a 标签

:hover 鼠标悬浮的节点
:active 当前选中的节点

:first-child 第一个子节点([更多看上一节序选择器](https://juejin.cn/post/6960999913409019918#heading-14))
:last-child 最后一个子节点
:enabled 启用的元素,通常用于表单
:focus 当前取的焦点的元素
:checked 选中的元素,通常用于表单 checkbox 元素
:disabled 未启用的元素,通常用于表单

2.常用伪元素

::before 元素内容前插入新内容
::after元素内容之后插入新内容
::first-letter 文本首字母。常用于对文本首字母设置样式
::first-line 文本首行。常用于对文本首行设置样式。仅用于块级元素。
::selection 选中的内容。常用于文本。
::placeholder 占位符。用于设置占位符的样式。