Mit »box-sizing: border-box;« das CSS Box Model verändern

Mit dem CSS Befehl box-sizing: border-box;
lässt sich das Box Model von CSS manipulieren. Die sichtbare Breite eines Elements wird dann nicht mehr wie üblich durch die Summe von width
, padding
und border
bestimmt, sondern schließt diese Angaben bereits mit ein. Das erleichtert die Erstellung flexibler Seitenelemente, insbesondere im RWD, deutlich.
Workshops & Schulungen von kulturbanause
Intensive Trainings mit hohem Praxisbezug.
Was stört am klassischen Box-Model?
Normalerweise addiert das Box Model von CSS die Angaben von padding
und border
zur Breite (width
) des Elements hinzu. Auch die Größe von margin
wird hinzugefügt; da margin
jedoch keinen Einfluss auf die sichtbare Breite des Elements hat, lasse ich diesen Punkt in diesem Zusammenhang mal außer acht.

Ein Container mit einer Breite von 100 Pixeln, einem padding
von 20 Pixeln und einer Umrahmung von 1 Pixel nimmt also tatsächlich 142 Pixel in Anspruch. 1px border-left
+ 20px padding-left
+ width
+ 20px padding-right
+ 1px border-right
= 142 Pixel Gesamtbreite.
In der Praxis ist dieses Verhalten sehr unpraktisch. Insbesondere wenn Prozentwerte für die Breite des Elements in Kombination mit pixelbasierten padding
- oder border
-Angaben verwendet werden kann es schnell zu Rundungsproblemen kommen.
Funktionsweise von box-sizing: border-box;
Mit der CSS-Eigenschaft box-sizing: border-box;
kann das Box Model verändert werden. Die Breite des Elements wird dann anhand der „Border Box“ berechnet. Wird einem Element eine Breite (width
) von 200 Pixeln zugewiesen, so nimmt das Element dank box-sizing
auch 200 Pixel in Anspruch. padding
und border
werden nach innen berechnet.

Browser-Support und Polyfills
Der Browser-Support für box-sizing: border-box;
sieht sehr gut aus. Alle modernen Browser unterstützen die Eigenschaft. Mozilla und Webkit brauchen allerdings noch einen Vendor-Prefix. Dennoch kann das Box-Modell bei modernen Websites für alle Elemente global verändert werden.
*, *:before, *:after {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
In den Internet Explorern 6 und 7 funktioniert die Eigenschaft nicht. Zu diesem Zweck gibt es allerdings ein Polyfill was Abhilfe schafft und sehr einfach einzusetzen ist.
Zunächst muss eine .htc
-Datei heruntergeladen werden. Im zweiten Schritt reicht der Befehl *behavior: url(/scripts/boxsizing.htc);
aus, um die Datei anzusprechen. Das war auch schon alles.
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
*behavior: url(/scripts/boxsizing.htc);
Links / Quellen
- Box Sizing Border Box FTW - Paul Irish
- Box Modell - SelfHTML
- Box Sizing Polyfill - Github
Jetzt bist du gefragt!
Hast du Anregungen, Ergänzungen, einen Fehler gefunden oder ist dieser Beitrag nicht mehr aktuell? Dann freuen wir uns auf deinen Kommentar.
Du kannst diesen Beitrag natürlich auch weiterempfehlen. Wir sind dir für jede Unterstützung dankbar!
Unterstützung bei Responsive Design-Projekten
Unsere Agentur ist auf responsive Design spezialisiert. Wir realisieren u.a. maßgeschneiderte Websites und führen Schulungen durch. Wenn du Unterstützung bei der Planung, Gestaltung und Entwicklung einer Website im Responsive Design benötigst, helfen wir gerne weiter.
Responsive Webdesign-Leistungsangebot →
Das könnte dich auch interessieren
4 Kommentare
Kommentar verfassen
Andy
Verfasst am 11. März 2013 um 14:17 Uhr.
In dem Absatz „In der Praxis ist dieses Verhalten…“ ist ein Vertipper „in Kombination mir pixelbasierten padding- oder border-Angaben“ da muss „mit“ anstatt „mir“ hin. :-)
Ansonsten sehr interessanter Beitrag.
Jonas Hellwig
Verfasst am 11. März 2013 um 16:21 Uhr.
Danke :)
Mark
Verfasst am 11. März 2013 um 15:11 Uhr.
An vielen Stellen halte ich box-sizing auch für unverzichtbar. Vielen Dank für den Polyfill-Link, das kannte ich noch nicht.
Daniele De Rosa
Verfasst am 13. März 2013 um 12:50 Uhr.
Auch ich kannte den Polyfill nicht, so gab beim IE 6 und 7 natürlich Probleme bezüglich box-sizing. Danke für den Link!