Die Reihen folge in der CSS Deklarationen einander überstimmen ist etwas kompliziert. Allgemein kann man sagen je genauer der Selektor (das vor der Klammer) desto *wichtiger* werden enthaltenen Anweisungen behandelt. Mit !important kann man das übertrumpfen, allerdings nur wenn nicht wieder eine weitere !important Anweisung widerspricht.
Wenn also überall !important steht dann geht dessen wirksamkeit verloren und unübersichtlich wirds auch.
Beispiel:
Wir haben einen link <a <, den wir einfärben wollen. Dem Link wird außerdem eine Klasse und eine ID zugewiesen:
|
PHP-Quelltext
|
1
|
<a href="..." class="linkklasse" id="linkid" >Link</a>
|
Dafür haben wir verschiedene Möglichkeiten:
|
Quellcode
|
1
2
3
4
|
* {color: black;} //der Universal Selector wählt alle Elemente an und hat die niedrigste Priorität
a {color: blue;} //der normale Selector für das a-Element steuert sämmtliche Links an
a.linkklasse {color: red;} //die Klasse ist genauer und hat damit eine höhere Priorität.
a#linkid {color: green;} //die ID ist noch wichtiger
|
Die Anweisungen für Schriftfarben widersprechen einander, die über den ID-Selector übertrumpft alle anderen.
Mit !important kann man wiederum diesen übertrumpfen.
|
Quellcode
|
1
2
3
|
* {color: white !important;} //wichtiger als die bisherigen
a {color: violet !important;} //wiederum wichtiger als der "wichtige" Universal-Selector
...
|
Falls bei zwei sich widersprechenden Anweisungen gleichstand herrscht überschreibt die Anweisung die weiter unten steht die darüber:
|
Quellcode
|
1
|
p {color: black; color: red;} //Text ist rot
|
Übrigens bedeuten .class und a.class nicht unbedingt das gleiche. Man kann Element-, Klassen- und ID-Selectoren beliebig kombinieren:
.class#id, a.class#id funktionieren ebenfalls und sind auch sehr genau und damit "wichtig".