Hallo,
Der IE verlangt vielfach redundante Angaben.
Eine generelle Definition mit den entsprechenden Ergänzungen in den einzelnen Zuständen genügt für den Mozilla und Opera, aber leider nicht immer für den IE.
Genau. Diese Erfahrung habe ich auch schon gemacht.
Nach welchen Kriterien er dies aber anlegt, habe ich selbst noch nicht wirklich herausgefunden.
Ich vermute, er hat Probleme mit der Kaskade oder mit der
"Spezifizitaet" (specificity):
http://www.w3.org/TR/CSS21/cascade.html#specificity
Wenn man etwas fuer allgemeine Links und ihre Pseudoklassen definiert:
a:link { text-decoration:underline; /* ... */}
a:visited { text-decoration:underline; /* ... */}
dann hat das die Spez. von: 11 oder 0,0,1,1 (1 Pseudo-Klasse, 1 Element)
Wenn man dann weiter unten im CSS eine Klasse definiert
a.spezial { text-decoration:none; }
hat dies die gleiche Spez.: 11 oder 0,0,1,1 (1 Klasse, 1 Element).
Weil diese Definition aber spaeter kommt, sollte sie "gewinnen".
http://www.w3.org/TR/CSS21/cascade.html#cascading-order
Fuer den MS IE muss man aber extra noch
a.spezial:link { text-decoration:none; }
a.spezial:visited { text-decoration:none; }
schreiben.
Dieser Selektor ist dann auch spezifischer:
21 oder 0,0,2,1 (1 Klasse + 1 Pseudoklasse, 1 Element)
Gruesse,
Thomas
P.S. In der Berechnung der Spezifizitaet widersprechen sich
die verschiedenen Versionen von CSS.
Die Links habe ich zusammengestellt auf:
http://www.tiptom.ch/tests/css/specificity.html
Soweit ich ueberflogen habe, sind aber
a:link { }
und
a.spezial { }
in allen bisherigen Versionen von CSS (1.0, 2.0, 2.0 Errata, 2.1)
jeweils gleich spezifisch.