CSS - Selektoren
Selektoren dienen der Zuweisung von CSS Eigenschaften auf bestimmte HTML Elemente und werden durch
den Namen des HTML Elements repräsentiert und innerhalb von <style>
Blöcken oder
externen CSS Dateien genutzt.
Zur Erinnerung: Die folgenden Listings zeigen die bereits vorgestellten Varianten
(HTML <style>
Tag vs. externer CSS Datei) zum Notieren von CSS Code:
Einfache Selektoren
In beiden Fällen wird ein sog. einfacher Selektor genutzt um die Hintergrundfarbe
des body
Tags zu ändern. Einfache Selektoren bestehen nur aus einem Elementennamen, diese können
aneinandergereiht werden.
Die Werte der obigen Eigenschaften weichen voneinander ab. An dieser Stelle muss geklärt werden, wie der Browser reagieren wird, wenn beide Varianten notiert werden. Welche der beiden Regeln wird umgesetzt?
Allgemeine Regeln
Um Konflikte dieser Art eindeutig auflösen zu können, gelten die folgenden Regeln:
1. Wenn mehrere externe CSS Dateien eingebunden werden und gleiche Regeln (mit unterschiedlichen Werten) besitzen, gewinnt die Regel in der zuletzt eingebundenen Datei. Also die Regel in der Datei die im Code weiter unten steht!
2. Wenn sich mehrere gleiche CSS Regeln (mit unterschiedlichen Werten) in einer externen Datei befinden, gewinnt die Regel die weiter unten steht!
3. Wenn sich mehrere gleiche CSS Regeln (mit unterschiedlichen Werten) im Kopf einer HTML Datei befinden, gewinnt die Regel die weiter unten steht! Ausserdem gewinnen diese Regeln gegenüber Regeln in externen CSS Dateien!
4. CSS Regeln die sich direkt (per <style>
Attribut) am Element befinden, gewinnen
gegenüber anderen Regeln!
Merksatz:
Desto näher sich eine CSS Eigenschaft am HTML Element befindet, desto höher ist dessen Priorität!
Demnach wird die Eigenschaft aus dem <style>
Block umgesetzt, da
diese laut Regel 3. gewinnt. Desweiteren greift der Merksatz!
Da es sich im obigen Beispiel in beiden Fällen um einfache Selektoren handelt, und beide Selektoren dadurch die selbe Priorität besitzen, zeigen sich die allgemeinen Regeln als ausreichend um den Konflikt zu lösen.
Kombinierte Selektoren
CSS bietet uns die Selektoren zu spezifizieren, dazu können sog. kombinierte Selektoren genutzt werden. Die Eigenschaften der kombinierten Selektoren besitzen eine höhrere Priorität gegenüber den einfachen Selektoren.
Sehen Sie sich die folgenden Kombinationsmöglichkeiten an. Analysieren Sie anschließend die Unterschiede und damit verbundenen Auswirkungen, wenn die folgenden Eigenschaften dem obigen Beispiel innerhalb einer externen CSS Datei hinzugefügt werden!
- Nachfahrenkombinator:
-
Mehrere einfache Selektoren können miteinander kombiniert werden. In diesem Fall spielt es bei der Vererbung keine Rolle, ob das zweite Element ein direktes Kindelement ist.
- Kindkombinator:
-
Bei dieser Kombination muss das zweite Element ein Kindelement vom ersten Selektor sein um die Eigenschaften zu erben!
Das Punktesystem
Zum Lösen von Konflikten dieser Art, existiert eine Art Punktesystem, die sog. Spezifität. Anhand der erreichten Punktzahl wird die Priorität festgelegt. Die Eigenschaft mit der höchsten Spezifität wird umgesetzt.
Im obigen Beispiel besitzen beide Regeln abweichende Werte, außerdem existiert noch die
Regel im <style<>
Block und die Regel des einfachen Selektors. Welche
CSS Eigenschaft erhält das <body<>
Element? Um diese Konflikte zu lösen
existieren die folgenden Regeln.
1. Die kombinierten Selektoren gewinnen gegenüber den einfachen Selektroen, da diese eine höhrere Spezifität besitzen.
Die CSS Eigenschaft body {background-color: #ede8fe;}
innerhalb der externen
CSS Datei wird von der folgenden Eigenschaft des body section { }
Selektors
überschrieben.
2. Die kombinierten Selektoren (Nachfahrenkombinator & Kindkombinator) besitzen die gleiche Spezifität. Laut den allgemeinen Regeln gewinnt diejenige Eigenschaft, die weiter unten im CSS Code steht.
3. Da die CSS Eigenschaft weiterhin im <style<>
Block des
HTML Dokuments existiert, gewinnt diese Regel erneut und überschreibt auch den Wert der letzten Regel aus der
externen CSS Datei!
Das Punktesystem der Selektoren:
Selektor | Beispiel | Punkte |
Einfacher Selektor | body {...} |
1 |
Nachfahrenkombinator | html a {...} |
1 Punkt je Selektor |
Kindkombinator | body > a {...} |
1 Punkt je Selektor |
Klasse | .box {...} |
10 |
Typ und Klasse | div.box {...} |
1 + 10 = 11 |
ID | #box {...} |
100 |
Typ und ID | div#box {...} |
1 + 100 = 101 |
Klassen
Mit der Hilfe einer Klasse lassen sich ganze Blöcke von Eigenschaften auf diverse HTML Elemente übertragen. Eine Klasse wird mittels einem . (Punkt) eingeleitet, gefolgt von deren Namen.
Alle Elemente mit dem Attribut class="box"
erhalten die obigen Eigenschaften.
IDs
Ganz ähnlich verhält es sich beim ID
Selektor. Der ID
Selektor wird mit einem # (Rautezeichen) eingeleitet.
Alle Elemente mit dem Attribut id="box"
erhalten die obigen Eigenschaften. Zu beachten ist, das eine ID im HTML Dokument
nur ein mal auftreten darf!
In der Praxis
Erweitern Sie die Datei main.css
. Nutzen Sie kombinierte
Selektoren um auf bestimmte HTML Bereiche spezielle CSS Eigenscahften
zu übertragen.
Zeit für ein paar Veränderungen innerhalb der CSS Datei. Sehen Sie sich die markierten Bereiche an und analysieren Sie anschließend die neuen Regeln.
1. Die aneinandergereihten Selektoren werden vor den einfachen Selektoren notiert. Veränderungen an den einfachen Selektoren überschreiben auf diese Weise die "allgemeinen" Eigenschaften dieser Gruppierung.
2. Die Selektoren werden sinnvoll sortiert und evtl. gruppiert.
3. Kombinierte Selektoren kommen zum Einsatz um bestimmte Bereiche zu stylen. Beachten Sie die Veränderungen im Kopf- und Fußbereich.
Bearbeiten Sie das Thema 3. CSS - Seitenlayout!