Hallo Gunnar,
Danke für die hilfreichen Ausführungen und die Aufklärung.
Lies mal das Kapitel
6.4 The Cascade in CSS 2.0 / CSS 2.1 durch, […]Der einzige Sinn, noch auf CSS 2.0 zu verweisen, wäre IMHO, dies wegen der deutschen Übersetzung zu tun; hier zu Kapitel 6.4.
Ich habe irgendetwas gegen diese Übersetzungen. (Was genau, habe ich
leider vergessen. Evtl. war es die Inkonsistenz, d.h. dass der gleiche
englische Fachbegriff mal so und mal so übersetzt wurde. Oder der
kommerzielle Beigeschmack mit der Bücher-Werbung. Wahrscheinlich
fände ich meine Meinung im Archiv wieder, wenn ich suchte...)
OK, die Autoren selbst empfehlen, dass man nur noch die 2.1
Version weiterempfehlen soll, obwohl sie noch nicht normativ ist.
Aber eben gerade beim hier besprochenen Thema gibt es deutliche
Unterschiede, darum habe ich beide Versionen verlinkt.
(Allerdings nicht beide Versionen in ihrer ganzen Länge durchgelesen...)
Ich finde das nicht einleuchtend und denke, dass es gegen die
Spezifitäts-Regeln verstösst.Nein. „PRIMÄR werden die Deklarationen nach Gewichtung und Ursprung sortiert […] Die ZWEITE Sortierung erfolgt nach der Spezifität des Selektors […]“ [§6.4.1] (Hervorhebung von mir).
Die '!important'-Deklaration im Autorenstylesheet hat also höhere Gewichtung als die Angabe im 'style'-Attribut (was ebenfalls als Autorenstylesheet zu werten ist), obwohl dessen „Selektor“ höhere Spezifität hat.
Du hast recht. Ich habe 6.4.1 noch einmal gründlich durchgelesen
und es jetzt (hoffentlich) auch verstanden.
Nur in CSS 2.0 steht (beim Punkt 2 der Liste) der
einfache Satz:
"!important" declaration override normal declarations.
Bei CSS 2.1 steht dann in Punkt 2:
Sort according to importance (normal or important) and origin
(author, user, or user agent). In ascending order of precendence:
1. user agent declarations
2. user normal declarations
3. author normal declarations
4. author important declarations
5. user important declarations
D.h. wenn ich als Autor eine Definition mit !important auszeichne,
ist sie [4.] und somit wichtiger als eine Autoren-Definition
ohne !important [3.]
Und da erst in Punkt 3 die Spezifität als Kriterium vorkommt,
ist der Fall klar, dass !important stärker gewichtet wird
als die Spezifität.
Und ich würde !important selbst nicht benutzen oder weiterempfehlen.
?? Wenn es nicht zur Anwendung gedacht wäre, wäre es nicht in die Spec aufgenommen worden. „Neben der Einstellung „!important“ für einzelne Deklarationen […]“ [ibid.]
Ich meinte: Ich würde !important nicht weiterempfehlen, um
damit einen Selektor stärker zu gewichten oder sonstwie
die Spezifität "auszutricksen". Aber ich verstehe jetzt,
dass man !important durchaus auch gemäss der Spec. dafür
verwenden kann. (Auch wenn ich sie immer noch so verstehe,
dass !important in erster Linie für den "Machtkampf" zwischen
Autoren- und Benutzer-Stylesheet gedacht ist.)
Freundliche Grüsse
Thomas