如何指定CSS类的顺序?

Tim*_*the 102 html css

我对CSS和class属性有点困惑.我一直认为,我在属性值中指定多个类的顺序具有意义.后面的类可以/应该覆盖前一个的定义,但这似乎不起作用.这是一个例子:

<html>
<head>
<style type="text/css">
    .extra {
        color: #00529B;
        border:1px solid #00529B; /* Blue */
        background-color: #BDE5F8;
    }

    .basic {
           border: 1px solid #ABABAB;
    }
</style>
</head>
<body>
    <input type="text" value="basic" class="basic"/>
    <input type="text" value="extra" class="extra"/>
    <input type="text" value="basic extra" class="basic extra"/>
    <input type="text" value="extra basic" class="extra basic"/>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

我希望,第三个示例class="basic extra"应该有一个蓝色边框,因为额外的指定边框将覆盖基本边框.

我在ubuntu 9.04上使用FF 3

Zoi*_*erg 227

类属性被覆盖的顺序不是由类属性中定义的类的顺序指定的,而是它们出现在css中的位置

.myClass1 {color:red;}
.myClass2 {color:green;}
Run Code Online (Sandbox Code Playgroud)
<div class="myClass2 myClass1">Text goes here</div>
Run Code Online (Sandbox Code Playgroud)

div中的文本将显示为绿色而不是红色,因为myClass2在CSS定义中比我的class1更低.如果我要在类属性中交换类名的顺序,那么什么都不会改变.

  • @因为因为规则是_级联_的。他们采用从上到下、从左到右的形式。我感觉合理 (6认同)
  • 我不明白为什么他们会像这样实施它.有趣的是,这也是我对CSS可以做的大多数其他事情的看法. (5认同)

Vot*_*ple 26

属性中类的顺序无关紧要.class属性中的所有类都同等地应用于元素.

问题是:样式规则以什么顺序出现在.css文件中.在您的示例中,.basic在此之后.extra,.basic规则将尽可能优先.

如果你想提供第三种可能性(例如,它.basic只是.extra规则应该仍然适用),你.basic-extra可能需要发明另一个类,它可能明确地提供了这个.


小智 5

这是可以做到的,但你必须对选择器有一点创意。使用属性选择器,您可以指定“开头为”、“结尾为”、“包含”等内容。请参阅下面的示例,使用相同的标记,但使用属性选择器。

[class$="extra"] {
  color: #00529B;
  border:1px solid #00529B;
  background-color: #BDE5F8;
}
[class$="basic"] {
  border: 1px solid #ABABAB;
}
input {display:block;}
Run Code Online (Sandbox Code Playgroud)
<input type="text" value="basic" class="basic"/>
<input type="text" value="extra" class="extra"/>
<input type="text" value="basic extra" class="basic extra"/>
<input type="text" value="extra basic" class="extra basic"/>
Run Code Online (Sandbox Code Playgroud)