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 占位符。用于设置占位符的样式。