19、css样式的优先级

html-css021

19、css样式的优先级,第1张

1、最近的祖先样式比其他祖先样式优先级高。

2、"直接样式"比"祖先样式"优先级高。

首先,我们需要知道有哪些选择器:

1)ID 选择器, 如 #id{}

2)类选择器, 如 .class{}

3)属性选择器, 如 a[href="segmentfault.com"]{}

4)伪类选择器, 如 :hover{}

5)伪元素选择器, 如 ::before{}

6)标签选择器, 如 span{}

7)通配选择器, 如 *{}

3、内联样式 >ID 选择器 >类选择器 = 属性选择器 = 伪类选择器 >标签选择器 = 伪元素选择器

4、当一个标签同时被多个选择符选中,我们便需要确定这些选择符的优先级。我们有如下规则:计算选择符中 ID 选择器的个数(a),计算选择符中类选择器、属性选择器以及伪类选择器的个数之和(b),计算选择符中标签选择器和伪元素选择器的个数之和(c)。按 a、b、c 的顺序依次比较大小,大的则优先级高,相等则比较下一个。若最后两个的选择符中 a、b、c 都相等,则按照"就近原则"来判断。

5、属性后插有 !important 的属性拥有最高优先级。若同时插有 !important,则再利用规则 3、4 判断优先级。

CSS优先级是根据等级的值相加得出选择器的权重来决定的。

!important >行内样式 >ID >类、伪类、属性 >标签名 >继承 >通配符

计算权重方式:

从图上看讲权重分为:

1. 第一等:代表内联样式,如: style=””,权值为1000。

2. 第二等:代表ID选择器,如:#content,权值为0100。

3. 第三等:代表类,伪类和属性选择器,如.content,权值为0010。

4. 第四等:代表类型选择器和伪元素选择器,如div p,权值为0001。

5. 通配符、子选择器、相邻选择器等的。如*、>、+,权值为0000。

6. 继承的样式没有权值。

当权重一样时遵循准则:

1. 选择器越 具体 优先级越 高

2. 在同一个级别的情况下, 最后 指定的规则优先级就越 高 ,也就是我们通常说的就近原则;

权重计算例子:

1. li  ->0 0 0 1 权重为 1

2. h1 + *[rel=up] ->0 0 1 1 这个相邻选择器由标签选择器与属性选择器组成,属性选择器为10,因此权重为11

3. ul ol li.red ->0 0 1 3 权重为13

4 li.red.level ->0 0 2 1 权重21

1. !important  (width: 100% !important)

2. 行内样式   (style="width:100%")

3. id选择器  (#myIdName)

4. class选择器  (.myClassName)

5. 标签选择器  (div,h1,p)

1. 使用 " >>>" 符号,这种方式主要是用于普通css,方式为:

  外层 >>>第三方组件样式: .wrapper >>>.swiper-pagination { color: #eee  }

2. 使用 "/deep/" ,这种方式主要用于sass或less,方式为:

外层 /deep/ 第三方组件样式: .wrapper /deep/ .swiper-pagination { color: #eee  }