Das Box-Model gilt für alle HTML-Tags, die Block-Elemente sind.
Für jedes Block-Element einer Seite wird nach den CSS-Regeln ein rechteckiger Bereich reserviert.
Laut Spezifikation des W3C-Konsortiums besteht eine Box aus folgenden Elementen:
dem Inhaltsbereich (Content), also der Fläche, die durch Texte und Bilder, oder Eigenschaften wie width und height vorgegeben wird
dem Innenabstand (padding)
dem Rahmen (border-width)
dem Außenabstand (margin)
div {
width: 300px;
padding: 25px;
border: 25px solid #ff0000;
margin: 25px;
}
In diesem Beispiel erhalten wir nun eine Box mit einer Breite von 450px, (margin:left + border-left-width + padding:left + content + padding:right + border-right-width + margin:right).
Die Höhe ist dynamisch, weil kein height definiert ist.
In diesem Beispiel könnte man denken, dass zwischen der Überschrift und dem ersten Absatz ein Abstand von 32px besteht.
Zwischen dem ersten und zweiten Absatz erwartet man einen Abstand von 24px. Ist aber nicht so. Dieses Verhalten nennt man zusammenfallende Abstände (collapsing margins).
Als tatsächlicher Abstand wird der Größte von beiden Werten (margins) verwendet, auch negative margins sind möglich!
Regeln für Zusammenfallende Abstände
horizontale margins (links und rechts) fallen nicht zusammen
vertikale margins die direkt untereinander stehen fallen zusammen (Ausnahme sind margins vom Wurzelelement html)
nur margins von statisch positionierten Elementen fallen zusammen
margins mit einem anderen Wert für overflow als visible fallen mit Kindboxen nicht zusammen
floats, inline-Blöcke bzw. absolut oder relativ positionierte Elemente fallen nicht zusammen
oberer margin einer Box und oberer margin der ersten Kind-Box fallen zusammen
unterer margin einer Box und unterer margin der letzten Kind-Box fallen zusammen
Alternatives Box-Modell (box-sizing)
Mit box-sizing kann man für seine Elemente ein alternatives Boxmodel aktivieren. Im herkömmlichen Box-Modell definiert width und height die Größe vom Content.
Mit box-sizing ist diese Verhalten Änderbar.
Eigenschaft
Bedeutung
Mögliche Werte
box-sizing
Gültigkeitsbereich für Breiten- und Höhenangaben einer Box
Sollen die Ausmaße von einer Box den Content beschreiben, oder soll padding mitgerechnet werden. Als dritte Option kann auch noch die Rahmenbreite
includiert werden. Das sind die wesentlichen Attributwerte von box-sizing, wobei padding-box noch nicht von den Browsern unterstützt wird, box-sizing-Attribute sind nicht vererbbar.
Mögliche Werte von box-sizing
content-box: Standardwert, gilt nur für den Content
padding-box: gilt noch als experimentiell, gilt für den Content + padding
border-box: gilt für den Content + padding + border-width
p {
width: 400px;
padding: 25px;
border: 25px solid #ff0000;
box-sizing: border-box;
}
Außenlinie (Outline)
Eine Außenlinie ist eine Linie, die um Elemente außerhalb von Border gezeichnet wird. Eine Außenlinie wird mit der Eigenschaft outline gezeichnet.
Outline ist nicht Teil der Dimension des Elements, also Breite und Höhe des Elements enthalten nicht die Breite von Outlines.
Outline Eigenschaften können einzeln oder als Zusammenfassung geschrieben werden. Die Reihenfolge spielt dabei keine Rolle.
Die Dicke der outline wird nicht zur Elementgröße hinzugerechnet, sondern nimmt den Platz rundherum ein. Im Beispiel bekommen alle p-Element einen Rahmen plus Außenlinie.
p {
border: 1px solid red;
outline: green dotted thick;
}