如果CSS中的两个类具有相同的派生类,CSS如何解析正确的类?
例如:
.ClassA.Left {}
.ClassB.Left {}
.Left {}
由于“左”这个类可以应用于任何对象,我如何才能确定它是我想要的? 用什么优先级来绑定'Left'?
答案 0 :(得分:1)
将.Left
作为一个类的任何内容都会在.Left
中应用这些样式,除非它还有ClassA
(class="Left ClassA"
)然后它将获得.Left
和.ClassA.Left
的样式,其中ClassA.Left
具有优先权,因为它具有更高的特异性。相同的规则适用于class="Left ClassB"
。
请参见此处的特异性:https://developer.mozilla.org/en-US/docs/Web/CSS/Specificity
答案 1 :(得分:0)
特异性
概念
特定性是浏览器决定哪个属性的方法 值与元素最相关并且可以应用。 特异性仅基于由组成的匹配规则 选择不同的种类。
如何计算?
特异性是根据计数的连续计算的 每个选择器类型。它不是一个适用于的重量 相应的匹配表达式。
在特异性平等的情况下,发现最新的声明 CSS应用于元素。
注意:文档树中元素的接近程度对此没有影响 特异性。
特异性的新月顺序
以下选择者列表是通过提高特异性来实现的:
- 通用选择器
- 类型选择器
- 班级选择器
- 属性选择器
- 伪类
- ID选择器
- 内联样式
!重要的例外
当样式声明使用!important规则时,这个 声明覆盖CSS中的任何其他声明,无论在何处 它在声明列表中。虽然,!重要无关 具有特异性。
:不例外
否定伪类:不被认为是伪类 特异性计算。虽然,选择者放入了 否定伪类计为正常选择器。
来源:https://developer.mozilla.org/en-US/docs/Web/CSS/Specificity
答案 2 :(得分:0)
同样,如果元素具有所有三个类(ClassA,ClassB和Left),则CSS表中列出的类的顺序很重要。
.ClassA.Left会被.ClassB.Left(对于常见属性)击败,因为.ClassB.Left在级联中较低。
单个类选择器被多个类选择器击败,因此.ClassA.Left击败.ClassA
HTML中类的源顺序不是一个因素。
<强> Codepen Specificity Example 强>