这就是CSS权重问题。在CSS中,不同的选择器具有不同的权重值。这些权重值指示哪个规则具有优先权。在计算样式时,CSS将考虑所有适用于相同元素的规则,并选择具有最高权重值的规则来应用于该元素。
选择器类型 权重 ------------------------------------ 样式声明(style attr) 优先权值无穷大 !important 优先权值无穷大 内联样式表 优先权值1000 ID选择器 优先权值100 类、属性、伪类选择器 优先权值10 元素、伪元素选择器 优先权值1 通配符、子选择器、相邻选择器 优先权值0
因为样式声明和!important具有无穷大的优先权值,它们总是会覆盖其他所有选择器和声明。内联样式表具有优先权值1000,比ID选择器的优先权值更高。选择器类型的优先权由高到低是ID选择器、类、属性、伪类选择器、元素、伪元素选择器、通配符、子选择器、相邻选择器。
当同一元素使用多个选择器定义相同的样式时,CSS根据它们的权重值来确定哪个规则优先应用。选择器权重的比较是叠加的,它会优先考虑规则的ID选择器、然后考虑规则的类、属性、伪类选择器、以此类推。如果两个规则具有相同的权重,则最后面声明的规则将具有优先权。最后,如果元素具有内联样式,则它的权重值将优先于所有其他选择器。