# css属性继承和优先级算法

# 一、css属性继承
# 可继承的:

font-size、font-family、color

当元素的一个继承属性(inherited property)没有指定值时,则取父元素的同属性的计算值(computed value)。只有文档根元素取该属性的概述中给定的初始值(initial value)(这里的意思应该是在该属性本身的定义中的默认值)。

# 不可继承的:

border、padding、margin、background-color、width、height

当元素的一个非继承属性(在Mozilla code 里有时称之为reset property )没有指定值时,则取属性的初始值 initial value(该值在该属性的概述里被指定)。

# 二、css优先级算法
# CSS选择器优先级(特异性)

是指在给HTML元素运用样式时,如果有多个CSS选择器同时指向了这个元素,那么优先级高的选择器的样式将最终运用到这个元素上。

# CSS选择器权重计算

在这里插入图片描述

在计算权重的时候可以用一组向量标志来表示(0,0,0,0)

(计算的时候就相当于第一位*1000+第二位*100+第三位*10+第四位*1

第一位:行内样式(在有行内样式的时候变成"1"

第二位:ID选择器数量

第三位:Class、属性、伪类选择器的数量

第四位:类型和伪元素选择器数量

如果最后计算权重相同,那么以定义顺序靠后的选择器优先,或者有**!important**标记优先

在这里插入图片描述

# 举个栗子:

我们想要修改“项目2”字体的颜色,此时显示粉色

在这里插入图片描述

还可以添加不同权重的选择器,来提高优先级,所以最终显示蓝色

在这里插入图片描述

在刚才的基础上再加上一个ID选择器,此时权重变成(0,1,1,1),此时显示黄色

在这里插入图片描述

如果我们再加上一个伪类选择器的话权重变成(0,1,2,1)高于下面的(0,1,1,1),所以此时最终显示的是绿色

在这里插入图片描述

如果权重相同的话,那么是以代码中定义的顺序靠后的选择器优先执行,所以此时显示的还是绿色

在这里插入图片描述

这里有个小技巧,写两遍选择器,来提高权重,此时(0,1,3,1)高于(0,1,2,1),所以显示红色

在这里插入图片描述

Last Updated: 7/15/2020, 10:34:45 PM