====== Textformatierung & Selektoren in CSS ====== Diese Dokumentation behandelt die CSS-Eigenschaften zur Textgestaltung, Zeilen- und Listensteuerung sowie erweiterte Selektortypen und die Spezifitätsberechnung basierend auf den Schulungsunterlagen[cite: 13]. ===== 1. Typografie & Schrifteigenschaften ===== Da Schriftarten auf dem Gerät des Benutzers vorhanden sein müssen, werden Schriftfamilien als Ausweichkette (Fallback-Liste) angegeben[cite: 13]. ==== Schriftarten (font-family) ==== Der Browser verwendet die erste verfügbare Schriftart der Liste[cite: 13]. Am Ende sollte immer eine generische Schriftfamilie stehen[cite: 13]: * **Generische Familien:** ''serif'', ''sans-serif'', ''monospace'', ''cursive'', ''fantasy''[cite: 13]. * Schriftnamen mit Leerzeichen müssen in Anführungszeichen gesetzt werden[cite: 13]. p { font-family: "Duru Sans", Verdana, sans-serif; } ==== Weitere Schrifteigenschaften ==== * **font-size:** Steuerung der Textgröße mittels Einheiten (z. B. ''rem'', ''em'', ''px'') oder Schlüsselwörtern[cite: 13]. * **font-weight:** Schriftstärke (z. B. ''normal'', ''bold'' oder Werte von ''100'' bis ''900'')[cite: 13]. * **font-style:** Schriftschrägung (''normal'', ''italic'', ''oblique'')[cite: 13]. * **font-variant:** Z. B. ''small-caps'' für echte Kapitälchen[cite: 13]. * **font-stretch:** Stauchung oder Dehnung der Schriftart (z. B. ''condensed'', ''expanded'')[cite: 13]. ==== Kurzschreibweise (font) ==== Kombiniert mehrere Schrifteigenschaften in einer Zeile. Mindestens ''font-size'' und ''font-family'' müssen angegeben werden[cite: 13]: /* Format: font: style weight stretch variant size/line-height font-family */ h3 { font: oblique bold small-caps 1.5em Verdana, sans-serif; } ===== 2. Textzeilen & Ausrichtung ===== ==== Zeilen- & Textabstände ==== * **line-height:** Mindestabstand von Grundlinie zu Grundlinie (Baseline)[cite: 13]. * **text-indent:** Einrücken der ersten Textzeile (z. B. ''2em'', ''25%'', ''-35px'')[cite: 13]. * **letter-spacing / word-spacing:** Zeichen- und Wortabstände anpassen[cite: 13]. ==== Textausrichtung & Dekoration ==== * **text-align:** Horizontale Ausrichtung (''left'', ''right'', ''center'', ''justify'', ''start'', ''end'')[cite: 13]. * **text-decoration:** Textverzierungen (''none'', ''underline'', ''overline'', ''line-through'', ''blink'')[cite: 13]. * **text-transform:** Groß-/Kleinschreibung anpassen (''capitalize'', ''lowercase'', ''uppercase'', ''none'')[cite: 13]. * **text-shadow:** Textschatten definieren (Format: ''Offset-X Offset-Y Unschärfe Farbe'')[cite: 13]. h1 { text-shadow: 0.2em 0.2em 0.1em silver; } ===== 3. Listenstilisierung ===== Zur Gestaltung von Listen dienen drei zentrale Eigenschaften[cite: 13]: * **list-style-type:** Typ des Aufzählungszeichens (z. B. ''disc'', ''circle'', ''square'', ''decimal'', ''lower-roman'', ''lower-greek'')[cite: 13]. * **list-style-position:** Position der Markierung relativ zum Textfeld (''outside'' [Standard] oder ''inside'')[cite: 13]. * **list-style-image:** Verwenden einer eigenen Grafik als Aufzählungszeichen (z. B. ''url('/images/bullet.png')'')[cite: 13]. ===== 4. Erweitere Selektoren ===== Neben einfachen Element-Selektoren bietet CSS erweiterte Typen zur gezielten Ansprache[cite: 13]: * **Nachkommenselektor (Descendant):** Spricht Elemente an, die sich innerhalb eines bestimmten Eltern-Elements befinden (getrennt durch Leerzeichen)[cite: 13]. ol a { font-weight: bold; } /* Nur Links innerhalb nummerierter Listen */ * **ID-Selektor:** Spricht ein spezifisches Element über dessen eindeutige ''id'' an (gekennzeichnet durch ''#'')[cite: 13]. #primary { color: olive; } * **Klassenselektor:** Spricht Elemente mit einem bestimmten ''class''-Attribut an (gekennzeichnet durch ''.'')[cite: 13]. .hilight { background-color: yellow; } * **Universalselektor:** Spricht jedes beliebige Element an (gekennzeichnet durch ''*'')[cite: 13]. * { border: 1px solid gray; } ===== 5. Berechnung der Spezifität ===== Die Spezifität bestimmt, welcher Selektor bei Konflikten Vorrang hat[cite: 13]. Sie wird über ein Drei-Klassen-System berechnet[cite: 13]: ^ Rang / Position ^ Selektortyp ^ | **Feld 1 (Höchste Priorität)** | Anzahl der **ID-Selektoren**[cite: 13] | | **Feld 2 (Mittlere Priorität)** | Anzahl der **Klassen- und Pseudoklassenselektoren**[cite: 13] | | **Feld 3 (Niedrigste Priorität)** | Anzahl der **Element-Selektoren**[cite: 13] | Inline-Stile über das ''style''-Attribut haben grundsätzlich eine höhere Spezifität als alle Selektoren im Stylesheet[cite: 13]. ==== Beispiel-Vergleich ==== * **''h1''** $ \rightarrow $ **[0] [0] [1]** (1 Element)[cite: 13] * **''blockquote p''** $ \rightarrow $ **[0] [0] [2]** (2 Elemente)[cite: 13] * **''h1.special''** $ \rightarrow $ **[0] [1] [1]** (1 Klasse, 1 Element)[cite: 13] Das erste Feld von links, bei dem kein Unentschieden herrscht, entscheidet[cite: 13]. Ein einzelner Klassenselektor **[0][1][1]** schlägt somit beliebig viele reine Elementselektoren wie **[0][0][2]**[cite: 13].