CSS层叠和继承

层叠

当有声明冲突的时候,浏览器会自动触发层叠机制

声明冲突:同一样式,不同的值,给同一个标签就会产生声明冲突

层叠的过程

1、比较优先级

一个声明的优先级,与它的来源和重要性有关

来源:1.作者(开发者)样式表:外部样式表;内部样式表;行内样式表

2.浏览器默认样式表

3.用户样式表

优先级排序:用户样式表>作者样式表>浏览器样式表

重要性:若属性值后跟上!important,则表示一条重要声明,否则,表示普通声明

例:color:red;普通声明

color:red !important;重要声明

2、比较特殊性(特指值/特指度)

每一个声明都有一个特殊性

一个声明的特殊性,取决于规则适用范围的大小,规则适用范围越大,特殊性越低;适用范围越小,特殊性越高

行内样式>ID选择器>类选择器>元素选择器>通配符选择器

在比较特殊性时,每一个冲突的声明,会生成4个数字(a,b,c,d),a越大,特殊性越高,若a相同,比较b,b越大,特殊性越高,依次类推

a:若声明时行内样式,则为1,否则为0

b:规则中id选择器的个数,有1算1,有几个算几个

c:规则中类选择器,伪类选择器和属性选择器的个数,相加

d:规则中元素选择器,伪元素选择器的总个数

通配符选择器特殊性为0

当计算选择器分组(并集选择器)的时候,要分开计算

3、比较源次级

最后出现的声明胜出,其他的全部淘汰

该规则的实际应用:

CSS Reset 代码前置

CSS重置文件 Reset.css 解决兼容性

a元素的伪类书写顺序

继承

继承(inherit),是指子元素会自动拥有父元素的某些css属性

并不是所有css属性都可以被子元素继承

可被继承的属性:

color,font-size,font-weight,text-align(基本上文本类的样式都可以继承)

不可被继承的属性:

background-color

继承发生的场景

一个元素的某个css属性,只有满足以下两个条件,才会继承父元素:

  • 该属性是可继承的属性

  • 该属性在样式表中没有声明

强制继承

强制继承也叫显式继承,是指将css属性值设置为inherit

这样做,通常有两个原因:

  • 为了继承有些不可继承的属性

  • 为了继承已被声明过的属性

猜你喜欢

转载自www.cnblogs.com/lp1995/p/9217387.html