I’m a little confused about CSS and the class attribute. I always thought, the order in which I specify multiple classes in the attribute value has a meaning. The later class could/should overwrite definitions of the previous, but this doesn’t seem to work. Here’s an example:
<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>
I would expect, the third example with class="basic extra" should have a blue border, since the in extra specified border would overwrite the border from basic.
I’m using FF 3 on ubuntu 9.04
The order in which the attributes are overwritten is not determined by the order the classes are defined in the
classattribute, but instead where they appear in the CSS.The text in the
divwill appeargreen, and notred; because.myClass2is further down in the CSS definition than.myClass1. If I were to swap the ordering of the class names in theclassattribute, nothing would change.