如果CSS中的两个类具有相同的派生类,那么CSS如何解析正确的类?
例如:
.ClassA.Left {}
.ClassB.Left {}
.Left {}
既然类‘左’可以应用于任何对象,我怎么能确信它是我想要的呢?绑定“左”的优先级是什么?
发布于 2013-09-21 09:17:10
任何以.Left
作为类的类型都将得到应用于.Left
中的样式,除非它还具有ClassA
(class="Left ClassA"
),否则它将从.Left
和.ClassA.Left
获得样式,ClassA.Left
优先,因为它具有更高的特异性。同样的规则也适用于class="Left ClassB"
。
参见此处关于专用性的内容:https://developer.mozilla.org/en-US/docs/Web/CSS/Specificity
发布于 2013-09-21 09:30:41
特异性 概念 专用性是浏览器决定哪些属性值与元素最相关并得到应用的方法。特异性只是基于不同类型的选择器组成的匹配规则。 它是如何计算的? 特异性是根据每种选择器类型计数的串联计算出来的。它不是应用于相应的匹配表达式的权重。 在特定性相等的情况下,CSS中找到的最新声明将应用于元素。 注:文档树中元素的邻近性对其特性没有影响。 新月专一性 以下是通过增加特异性而列出的选择器:
重要的例外
当在样式声明上使用一个!重要规则时,此声明将重写CSS中的任何其他声明,无论它在声明列表中的哪个位置。虽然,!重要与特殊性无关。
不例外:
否定伪类:not在特异性计算中不被视为伪类.虽然,选择器作为普通选择器放置到否定伪类计数中.
来源:https://developer.mozilla.org/en-US/docs/Web/CSS/Specificity
发布于 2013-09-21 09:32:29
同样地,如果元素拥有所有三个类(ClassA、ClassB和Left),那么在CSS表中列出类的顺序就很重要了。
.ClassA.Left将被.ClassB.Left (对于公共属性)击败,因为.ClassB.Left在级联中较低。
单类选择器被多个类选择器击败,因此.ClassA.Left优于.ClassA。
HTML中类的源顺序不是一个因素。
https://stackoverflow.com/questions/18935269
复制