Vollständige CSS-Selektoren Referenz
Dieses umfassende Nachschlagewerk bietet Entwicklern eine vollständige Übersicht über alle CSS-Selektoren. Ziel ist es, eine schnelle und präzise Auswahl der richtigen Selektoren für jede Webentwicklungssituation zu ermöglichen. Die Referenz deckt grundlegende Selektoren, Kombinatoren, Attributselektoren, Pseudoklassen, Pseudoelemente, erweiterte Selektoren und Media Query-Selektoren ab. Entwickler können diese systematische Gliederung nutzen, um effizient Styles zuzuweisen, Browser-Kompatibilität zu prüfen und wiederverwendbare, saubere CSS-Strukturen zu erstellen. Die Beispiele sind praxisnah und sofort einsetzbar, ideal für die tägliche Frontend-Entwicklung.
📊 Basic Selectors
Selektor | Syntax | Beschreibung | Beispiel | Browserunterstützung |
---|---|---|---|---|
* | * | Universalselektor – wählt alle Elemente aus | * { margin: 0; } | Alle Browser |
element | tagname | Typselektor – wählt alle Elemente eines Typs | p { color: blue; } | Alle Browser |
.class | .classname | Klassenselektor – wählt Elemente mit bestimmter Klasse | .highlight { background: yellow; } | Alle Browser |
\#id | #idname | ID-Selektor – wählt Element mit bestimmter ID | #header { width: 100%; } | Alle Browser |
📊 Combinator Selectors
Selektor | Syntax | Beschreibung | Beispiel | Browserunterstützung |
---|---|---|---|---|
descendant | A B | Nachfahrenselektor – wählt B innerhalb von A | div p { margin: 10px; } | Alle Browser |
child | A > B | Kindselektor – wählt direktes Kind B von A | ul > li { list-style: none; } | IE7+ |
adjacent sibling | A + B | Nachbarselektor – wählt B direkt nach A | h1 + p { font-weight: bold; } | IE7+ |
general sibling | A \~ B | Allgemeiner Geschwisterselektor – wählt alle B nach A | h1 \~ p { color: gray; } | IE7+ |
📊 Attribute Selectors
Selektor | Syntax | Beschreibung | Beispiel | Browserunterstützung |
---|---|---|---|---|
\[attribute] | \[attr] | Wählt Elemente mit angegebenem Attribut | \[disabled] { opacity: 0.5; } | IE7+ |
\[attribute=value] | \[attr=val] | Wählt Elemente, deren Attribut gleich Wert ist | \[type="text"] { border: 1px solid; } | IE7+ |
\[attribute\~=value] | \[attr\~=val] | Wählt Elemente, deren Attribut Wort enthält | \[class\~="button"] { cursor: pointer; } | IE7+ |
\[attribute^=value] | \[attr^=val] | Wählt Elemente, deren Attribut mit Wert beginnt | \[href^="https"] { color: green; } | IE7+ |
\[attribute\$=value] | \[attr\$=val] | Wählt Elemente, deren Attribut endet | \[src\$=".jpg"] { border: 2px solid; } | IE7+ |
\[attribute*=value] | \[attr*=val] | Wählt Elemente, deren Attribut Wert enthält | \[title*="important"] { font-weight: bold; } | IE7+ |
\[attribute="value" i] | \[attr="val" i] | Groß-/Kleinschreibung ignorieren | \[type="EMAIL" i] { text-transform: lowercase; } | Moderne Browser |
📊 Pseudo-class Selectors - Structural
Selektor | Syntax | Beschreibung | Beispiel | Browserunterstützung |
---|---|---|---|---|
:first-child | :first-child | Erstes Kind-Element auswählen | p:first-child { margin-top: 0; } | IE7+ |
:last-child | :last-child | Letztes Kind-Element auswählen | p:last-child { margin-bottom: 0; } | IE9+ |
:nth-child(n) | :nth-child(n) | N-tes Kind-Element auswählen | tr:nth-child(2n) { background: #f0f0f0; } | IE9+ |
:nth-last-child(n) | :nth-last-child(n) | N-tes Kind von hinten auswählen | li:nth-last-child(2) { color: red; } | IE9+ |
:nth-of-type(n) | :nth-of-type(n) | N-tes Element eines Typs | h2:nth-of-type(odd) { color: blue; } | IE9+ |
:nth-last-of-type(n) | :nth-last-of-type(n) | N-tes Element eines Typs von hinten | p:nth-last-of-type(1) { font-weight: bold; } | IE9+ |
:first-of-type | :first-of-type | Erstes Element eines Typs | img:first-of-type { float: left; } | IE9+ |
:last-of-type | :last-of-type | Letztes Element eines Typs | p:last-of-type { margin-bottom: 20px; } | IE9+ |
:only-child | :only-child | Nur-Kind-Element auswählen | p:only-child { text-align: center; } | IE9+ |
:only-of-type | :only-of-type | Einziges Element eines Typs | img:only-of-type { display: block; } | IE9+ |
:empty | :empty | Elemente ohne Kinder auswählen | div:empty { display: none; } | IE9+ |
📊 Pseudo-class Selectors - User Action
Selektor | Syntax | Beschreibung | Beispiel | Browserunterstützung |
---|---|---|---|---|
:hover | :hover | Element bei Maus-Hover auswählen | a:hover { color: red; } | Alle Browser |
:active | :active | Element beim Aktivieren auswählen | button:active { transform: scale(0.95); } | Alle Browser |
:focus | :focus | Element mit Fokus auswählen | input:focus { outline: 2px solid blue; } | Alle Browser |
:focus-visible | :focus-visible | Sichtbar fokussiertes Element auswählen | button:focus-visible { outline: 2px solid; } | Moderne Browser |
:focus-within | :focus-within | Element, das fokussiertes Kind enthält | form:focus-within { border: 1px solid blue; } | Moderne Browser |
📊 Pseudo-class Selectors - Form States
Selektor | Syntax | Beschreibung | Beispiel | Browserunterstützung |
---|---|---|---|---|
:enabled | :enabled | Aktive Formularelemente auswählen | input:enabled { background: white; } | IE9+ |
:disabled | :disabled | Deaktivierte Formularelemente auswählen | input:disabled { background: #f5f5f5; } | IE9+ |
:checked | :checked | Ausgewählte Checkboxen/Radio Buttons | input:checked + label { font-weight: bold; } | IE9+ |
:indeterminate | :indeterminate | Indeterminate Checkbox | input:indeterminate { opacity: 0.5; } | IE9+ |
:valid | :valid | Gültige Formularelemente | input:valid { border-color: green; } | IE10+ |
:invalid | :invalid | Ungültige Formularelemente | input:invalid { border-color: red; } | IE10+ |
:required | :required | Erforderliche Felder | input:required { border-left: 3px solid red; } | IE10+ |
:optional | :optional | Optionale Felder | input:optional { border-left: 3px solid gray; } | IE10+ |
:read-only | :read-only | Nur-Lese Felder | input:read-only { background: #f9f9f9; } | Moderne Browser |
:read-write | :read-write | Bearbeitbare Felder | input:read-write { background: white; } | Moderne Browser |
:placeholder-shown | :placeholder-shown | Felder mit Placeholder | input:placeholder-shown { font-style: italic; } | Moderne Browser |
:in-range | :in-range | Wert innerhalb Bereich | input:in-range { border-color: green; } | Moderne Browser |
:out-of-range | :out-of-range | Wert außerhalb Bereich | input:out-of-range { border-color: red; } | Moderne Browser |
📊 Pseudo-class Selectors - Link States
Selektor | Syntax | Beschreibung | Beispiel | Browserunterstützung |
---|---|---|---|---|
:link | :link | Unbesuchte Links | a:link { color: blue; } | Alle Browser |
:visited | :visited | Besuchte Links | a:visited { color: purple; } | Alle Browser |
:any-link | :any-link | Alle Links | a:any-link { text-decoration: underline; } | Moderne Browser |
:target | :target | Ziel der aktuellen URL | :target { background: yellow; } | IE9+ |
📊 Pseudo-class Selectors - Logical
Selektor | Syntax | Beschreibung | Beispiel | Browserunterstützung |
---|---|---|---|---|
:not(selector) | :not(sel) | Nicht-Übereinstimmende Elemente | p:not(.special) { color: gray; } | IE9+ |
:is(selector) | :is(sel1, sel2) | Elemente passend zu beliebigem Selektor | :is(h1, h2, h3) { margin-top: 0; } | Moderne Browser |
:where(selector) | :where(sel1, sel2) | Wie :is(), aber Spezifität 0 | :where(h1, h2) { color: blue; } | Moderne Browser |
:has(selector) | :has(sel) | Elemente mit bestimmtem Inhalt | div:has(img) { border: 1px solid; } | Moderne Browser |
📊 Pseudo-element Selectors
Selektor | Syntax | Beschreibung | Beispiel | Browserunterstützung |
---|---|---|---|---|
::before | ::before | Inhalt vor Element einfügen | p::before { content: "→ "; } | IE9+ (single colon IE8+) |
::after | ::after | Inhalt nach Element einfügen | p::after { content: " ←"; } | IE9+ (single colon IE8+) |
::first-line | ::first-line | Erste Zeile auswählen | p::first-line { font-weight: bold; } | IE9+ (single colon IE6+) |
::first-letter | ::first-letter | Ersten Buchstaben auswählen | p::first-letter { font-size: 2em; } | IE9+ (single colon IE6+) |
::selection | ::selection | Ausgewählten Text auswählen | ::selection { background: yellow; } | IE9+ |
::placeholder | ::placeholder | Placeholder-Text auswählen | input::placeholder { color: #999; } | Moderne Browser |
::backdrop | ::backdrop | Hintergrund von Vollbild | dialog::backdrop { background: rgba(0,0,0,0.5); } | Moderne Browser |
📊 Advanced Selectors
Selektor | Syntax | Beschreibung | Beispiel | Browserunterstützung |
---|---|---|---|---|
:root | :root | Dokumenten-Wurzel | :root { --main-color: blue; } | IE9+ |
:scope | :scope | Scope-Element auswählen | :scope > p { margin: 0; } | Moderne Browser |
:defined | :defined | Definierte Custom-Elemente | custom-element:defined { opacity: 1; } | Moderne Browser |
:host | :host | Shadow Host | :host { display: block; } | Moderne Browser |
:host(selector) | :host(sel) | Shadow Host mit Selektor | :host(.active) { color: red; } | Moderne Browser |
:host-context(selector) | :host-context(sel) | Host in bestimmtem Kontext | :host-context(.dark) { color: white; } | Moderne Browser |
::slotted(selector) | ::slotted(sel) | In Shadow DOM geslotteter Inhalt | ::slotted(p) { margin: 0; } | Moderne Browser |
📊 Media Query Selectors
Selektor | Syntax | Beschreibung | Beispiel | Browserunterstützung |
---|---|---|---|---|
@media | @media (condition) | Stile basierend auf Medienspezifikation | @media (max-width: 768px) { .nav { display: none; } } | IE9+ |
@supports | @supports (property: value) | Stile bei Feature-Unterstützung | @supports (display: grid) { .layout { display: grid; } } | Moderne Browser |
@container | @container (condition) | Stile basierend auf Containergröße | @container (min-width: 400px) { .card { flex-direction: row; } } | Moderne Browser |
Quick Examples
css/* Kombination grundlegender Selektoren */
.header nav ul li a:hover {
color: #007bff;
text-decoration: none;
}
/* Attributselektoren für Formulare */
input\[type="email"]:focus:valid {
border-color: green;
box-shadow: 0 0 5px rgba(0,255,0,0.3);
}
/* Pseudo-Elemente für erweitertes Styling */
.quote::before {
content: "“";
font-size: 2em;
color: #999;
}
/* Erweiterte Strukturselektoren */
.grid-item:nth-child(3n+1) {
margin-left: 0;
}
/* Moderne logische Selektoren */
:is(h1, h2, h3):not(.no-margin) {
margin-top: 2rem;
}
Best Practices und Tipps:
Verwenden Sie spezifische Selektoren, um unbeabsichtigte Stilkonflikte zu vermeiden. Bevorzugen Sie Klassenselektoren gegenüber IDs für Wiederverwendbarkeit. Kombinieren Sie Selektoren effizient, um die CSS-Dateigröße zu reduzieren. Testen Sie Pseudo-Klassen in verschiedenen Browsern. :not() kann Performance beeinflussen, daher vorsichtig einsetzen. Pseudo-Elemente erzeugen virtuelle DOM-Elemente. Beachten Sie die Spezifität bei komplexen Kombinationen. Attributselektoren eignen sich für dynamische Formulare. Testen Sie moderne Selektoren (:has(), :is()) auf Browserunterstützung. Gruppieren Sie verwandte Selektoren für bessere Organisation. Verwenden Sie Nachfahrenselektoren sparsam, um Überverschachtelung zu vermeiden. Manche Pseudo-Klassen funktionieren nur mit bestimmten Elementen.
🧠 Testen Sie Ihr Wissen
Reference Knowledge Check
Testen Sie Ihr Wissen über CSS-Selektoren und deren Anwendung.
📝 Anweisungen
- Lesen Sie jede Frage sorgfältig
- Wählen Sie die beste Antwort für jede Frage
- Sie können das Quiz so oft wiederholen, wie Sie möchten
- Ihr Fortschritt wird oben angezeigt