Hallo Thomas,
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)
Ja, genau. Ich habe es für mich einfach so gemacht, daß ich bei Pseudoklassen immer die ganze Latte einfüge, dann kann nichts schiefgehen, da er auch bei gleicher Spezifität immer die vorhergehenden Werte überschreibt. Erschwerend kommt ja hinzu, daß er allgemeine Definitionen wie a {Sp:0001} auch nicht immer in die einzelnen Zustände übernimmt, sondern auch bei a:link {Sp:0011} usw. oft Redundanz verlangt. Da hier aber eine höhere Spezifität gegeben wäre, kann es nicht (nur) daran liegen. Allerdings ist das nicht bei allen Angaben so. Der IE macht ein Lotteriespiel draus, was er übernimmt und was nicht.
Bsp.:
a
{
font-family:verdana,tahoma,arial,helvetica,sans-serif;
color:#535593;
text-decoration:none;
font-weight:bold;
}
Font-Family wird übernommen, color, text-decoration und font-weight hingegen nicht.
Deshalb erspare ich mir die Rätselraterei lieber gleich und schreibe alles relevante gleich in jede Pseudoklasse.
Opera und Mozilla akzeptieren hingegen Angaben in dieser Form und führen diese korrekt aus.
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.
Danke für die Links, ist interessant zu lesen, soweit ich es mit meinen Englischkenntnissen zusammenbringe. ;-)
Gruß
Kurt