Inhaltsverzeichnis
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):widthundheightbeziehen sich ausschließlich auf den Inhaltsbereich[cite: 9]. Padding und Border werden zur Gesamtbreite hinzuaddiert[cite: 9].border-box:widthundheightbeinhalten 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 vonwidthundheight[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 */