如何指定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> 

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

我在Ubuntu 9.04上使用FF 3

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

 .myClass1 {font-size:10pt;color:red} .myClass2 {color:green;} 

HTML

 <div class="myClass2 myClass1">Text goes here</div> 

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

属性中的类的顺序是不相关的。 class属性中的所有类同样适用于元素。

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

如果你想提供第三种可能性(例如,它是.basic但是.extra规则仍然适用),你需要创build另一个类, .basic-extra或许是明确规定的。