====== CSS Box-Modell: Aufbau, Abmessungen & Eigenschaften ====== Das CSS-Box-Modell bildet das Fundament für das Layout und die Positionierung von HTML-Elementen auf Webseiten[cite: 9]. Jedes HTML-Element wird als rechteckige Box dargestellt[cite: 9]. ===== 1. Die Bestandteile einer Elementbox ===== Eine Elementbox setzt sich aus vier verschachtelten Bereichen zusammen (von innen nach außen)[cite: 9]: * **Content (Inhaltsbereich):** Enthält den eigentlichen Inhalt wie Text, Bilder oder verschachtelte Elemente[cite: 9]. * **Padding (Innenabstand):** Transparentes Polster zwischen dem Inhaltsbereich und dem Rahmen[cite: 9]. * **Border (Rahmen):** Eine Linie, die den Inhaltsbereich samt Padding umschließt[cite: 9]. * **Margin (Außenabstand):** Transparenter Raum außerhalb des Rahmens, der den Abstand zu benachbarten Elementen regelt[cite: 9]. ===== 2. Boxabmessungen & Sizing-Modelle ===== ==== Grundlegende Dimensionen ==== Die Abmessungen werden über die Eigenschaften ''width'' (Breite) und ''height'' (Höhe) gesteuert[cite: 9]. Als Werte dienen Längenangaben (z. B. ''px'', ''em''), Prozentwerte oder ''auto''[cite: 9]. ==== Das box-sizing Attribut ==== Über die Eigenschaft ''box-sizing'' wird festgelegt, wie sich die Gesamtbreite und -höhe eines Elements berechnen[cite: 9]: * ''content-box'' **(Standard):** ''width'' und ''height'' beziehen sich ausschließlich auf den Inhaltsbereich[cite: 9]. Padding und Border werden zur Gesamtbreite hinzuaddiert[cite: 9]. * ''border-box'': ''width'' und ''height'' beinhalten bereits Padding und Border[cite: 9]. Dies erleichtert responsive Layouts erheblich[cite: 9]. /* Berechnungsbeispiel bei width: 500px, padding: 50px, border: 10px */ div.content-box-example { box-sizing: content-box; width: 500px; /* Gesamte sichtbare Breite = 500px + 2x50px + 2x10px = 620px */ } div.border-box-example { box-sizing: border-box; width: 500px; /* Gesamte sichtbare Breite bleibt exakt 500px */ } ==== Umgang mit Überlauf (overflow) ==== Wenn Inhalt die festgelegten Abmessungen einer Box überschreitet, steuert ''overflow'' das Verhalten[cite: 9]: * ''visible'': Inhalt quillt über die Box hinaus (Standard)[cite: 9]. * ''hidden'': Überstehender Inhalt wird abgeschnitten und ist unsichtbar[cite: 9]. * ''scroll'': Erzeugt dauerhaft Bildlaufleisten[cite: 9]. * ''auto'': Zeigt Bildlaufleisten nur bei Bedarf an[cite: 9]. ===== 3. Padding (Innenabstand) ===== Das Padding lässt sich einzeln (''padding-top'', ''padding-right'', ''padding-bottom'', ''padding-left'') oder über die Kurzschreibweise im Uhrzeigersinn (TRouBLe: Top, Right, Bottom, Left) definieren[cite: 9]: /* Einzelne Angaben */ blockquote { padding-top: 2em; padding-right: 4em; padding-bottom: 2em; padding-left: 4em; } /* Kurzschreibweisen */ blockquote { padding: 2em 4em 2em 4em; } /* Oben, Rechts, Unten, Links */ blockquote { padding: 2em 4em 2em; } /* Oben, Links+Rechts, Unten */ blockquote { padding: 2em 4em; } /* Oben+Unten, Links+Rechts */ blockquote { padding: 2em; } /* Alle 4 Seiten gleich */ ===== 4. Borders (Rahmen) & Eckenabrundung ===== Ein Rahmen benötigt zwingend die Angabe eines Stil-Typs (''border-style''), damit er gerendert wird[cite: 9]. ==== Eigenschaften & Kurzschreibweise ==== * **Mögliche Stile (border-style):** ''none'', ''solid'', ''dotted'', ''dashed'', ''double'', ''groove'', ''ridge'', ''inset'', ''outset''[cite: 9]. * **Breite (border-width):** Längenangaben oder Schlüsselwörter (''thin'', ''medium'', ''thick'')[cite: 9]. * **Farbe (border-color):** Farbwerte[cite: 9]. /* Einzelausdrücke */ div#example { border-width: 2px; border-style: solid; border-color: aqua; } /* Kurzschreibweise: border: [width] [style] [color]; */ p.example { border: 2px dotted aqua; } ==== Abgerundete Ecken (border-radius) ==== Mit ''border-radius'' werden Ecken abgerundet[cite: 9]. Werte können in Pixeln oder Prozent angegeben werden[cite: 9]. p { border-radius: 1em; /* Alle Ecken gleich */ border-radius: 1em 2em; /* Oben-Links/Unten-Rechts , Oben-Rechts/Unten-Links */ border-top-left-radius: 50px;/* Einzelne Ecke */ } ===== 5. Margins (Außenabstand) & Margin Collapsing ===== ==== Definition ==== Der Margin erzeugt Abstand außerhalb des Rahmens zu benachbarten Elementen[cite: 9]. Die Syntax entspricht exakt der Kurzschreibweise von Padding[cite: 9]. ==== Zusammentreffen von Außenabständen (Margin Collapsing) ==== Vertikale Margins (oben/unten) von aufeinanderfolgenden Block-Elementen addieren sich nicht, sondern **kollidieren**[cite: 9]. Es setzt sich jeweils der **größere Wert** durch[cite: 9]. /* Beispiel für Collapsing: */ .element-top { margin-bottom: 4em; } .element-bottom { margin-top: 2em; } /* Der resultierende Abstand zwischen den Elementen beträgt 4em (nicht 6em). */ ===== 6. Anzeigerollen & Schlagschatten ===== ==== Display-Eigenschaft (display) ==== Steuert das Verhalten der Elementbox im Textfluss[cite: 9]: * ''block'': Element nimmt die volle Breite ein und beginnt auf einer neuen Zeile[cite: 9]. * ''inline'': Element fließt im Text und nimmt nur die Breite seines Inhalts ein (Breite/Höhe nicht anpassbar)[cite: 9]. * ''inline-block'': Fließt wie Inline, erlaubt aber die Definition von ''width'' und ''height''[cite: 9]. * ''flex'' / ''grid'': Aktiviert moderne Layout-Kontexte[cite: 9]. * ''none'': Blendet das Element vollständig aus[cite: 9]. ==== Schlagschatten (box-shadow) ==== Erzeugt einen Schattenwurf um die Elementbox[cite: 9]. Syntax: ''box-shadow: [horizontal-offset] [vertical-offset] [blur-distance] [spread-distance] [color] [inset];''[cite: 9] div.shadow-a { box-shadow: 6px 6px gray; } /* Harter Schatten */ div.shadow-b { box-shadow: 6px 6px 5px gray; } /* Weicher Schatten (Blur) */ div.shadow-c { box-shadow: 6px 6px 5px 10px gray; } /* Blur + Ausdehnung (Spread) */ div.shadow-d { box-shadow: inset 2px 2px 4px rgba(0,0,0,0.5); } /* Innenliegender Schatten */