Tutorials zur Webentwicklung

<l-w-y-s> · Umfangreich · Verständlich

CSS - Box Modell

Das Box Modell (box model) dient zur Beschreibung von HTML Elementen und bezieht sich dabei auf bestimmte CSS Eigen­schaften. Bei den sog. Block­elementen lassen sich diese Eigen­schaften besonders gut beobachten.

Zur Erinnerung: Bei den Block­elementen, handelt es sich um eine Kategorie von HTML Elementen. Die Elemente sind tatsächlich nichts anderes als Blöcke oder Boxen, nehmen die gesamte zur Ver­fügung stehende Breite ein und besitzen einen auto­matischen Zeilen­umbruch. Die Höhe richtet sich nach dem Inhalt.

HTML Blockelemente

Block­elemente sind nicht immer auf den Ersten Blick zu erkennen. Mit Hilfe der Dev-Tools lassen sich die Elemente und deren Eigen­schaften optisch dar­stellen.

Skizze 001
Blockelement (Beispiel)

CSS Eigenschaften

Die Dev-Tools liefern uns die Eigen­schaften und die Werte der CSS Regeln und stellen eine Skizze der Boxen zur besseren Über­sicht zur Ver­fügung. Die Eigen­schaften des Bos Modells beziehen sich auf die Aus­dehnungen (Breite & Höhe), die Abstände (margin & padding) und die Ränder (border) der Boxen.

Skizze 001a
Browseransicht

Darstellung der CSS Eigenschaften:

Skizze 001b
Skizz: Box Modell

Beschreibung der CSS Eigen­schaften:

  • Außenabstand: margin bestimmt den Abstand, den das betreffende Element zu seinem umgebenden Eltern­element ein­nimmt
  • Rand: border definiert Ränder und steuert deren Form und Farbe
  • Innenabstand: padding sestimmt den Abstand, den das betreffende Element zu seinem Inhalt ein­hält
  • Inhalt: content ist der sicht­bare Teil des Elements

Weitere Eigen­schaften

display:
selektor {
  display: block;
}
Listing: display

Die CSS Eigen­schaft display beschreibt die Art der Dar­stellung. Block­elemente besitzen standard­mäßig den Wert display: block;.

Mehr dazu ...

width & height:
selektor {
  width: 100%;
  height: auto;
}
Listing: width & height

Die CSS-Eigen­schaften bestimmen die Breite und die Höhe der Boxen. Block­elemente besitzen standard­mäßig die Werte width: 100%; und height: auto;.

Mehr dazu ...

Berechnung

Für die Berechnung des Outlinings der Boxen liegen ver­schiedene Methoden zugrunde. Die zu ver­wendende Methode kann mit der CSS Eigen­schaft box-sizing bestimmt werden.

selektor {
  box-sizing: border-box;
}
Listing: box-sizing (Beispiel)
Skizze 002
Ansicht: box-sizing

Durch die Angabe von box-sizing: border-box; konzentriert sich die Berechnung für die Box auf den Inhalt.

Die Breite und die Höhe um­fassen den Inhalt, den Innen­abstand und den Rand, jedoch nicht den äußeren Abstand.

Die errechnete Breite (computed-width) eines Elements ergibt sich also aus der Addition der Breite mit den Werten der äußeren Ab­stände! Die Werte der inneren Ab­stände und der Ränder werden nicht hinzu­gerechnet.

Mehr dazu ...

Die overflow Eigen­schaft

Mit der CSS Eigen­schaft overflow kann das Ver­halten des Inhalts in Bezug auf die umgebende Box gesteuert werden.

selektor {
  overflow: hidden;
}
Listing: overflow (Beispiel)
Skizze 003
Ansicht: overflow: hidden;

Durch die Angabe von overflow: hidden; wird ver­hindert, dass der Inhalt der Box über die definierten Grenzen "hinaus ragt" (Sprich: Seine eigene Box floatet).

Mehr dazu ...

In der Praxis

Die bereits erarbeiteten Beispiele der Kapitel HTML - Grundlagen und CSS - Einstieg bilden die Basis der folgenden praktischen Arbeit.

<head>

  ... unverändert ...

</head>


<header>

  <p>
    Kopfbereich
  </p>

</header>


<main>

  ... unverändert ...

</main>


<aside>

  <p>
    Seitenbereich
  </p>

</aside>


<footer>

  <p>
    Fußbereich
  </p>

</footer>
Listing der Datei index.html

Der Auf­bau der Seite ist bisher noch sehr über­sichtlich. Aber immer­hin gibt es mehrere Elemente die uns eine gute Basis zum Auf­bau des Layouts bieten und an dieser Stelle bearbeitet werden können.

Das <body> Elemen enthält mehrere strukturierende Elemente. Im <main> Bereich befinden sich zwei weitere <section> Elemente mit jeweils einer Über­schrift und einem Text­absatz.

Bei all diesen Elementen handelt es sich um Block­elemente, die damit den Regeln des Box Modells unter­liegen.

Informationsbox

Verändern Sie die Aus­dehnungen und Ab­stände vom Kopf- / Seiten- / Haupt- und Fuß­bereich der Datei index.html. Erweitern Sie die vor­handene externe CSS Datei main.css und nutzen Sie dazu die erlernten Eigen­schaften des Box Modells.

Beide Dateien dienen als Grund­gerüst und werden in den folgenden Themen­blöcken konsequent erweitert!

1.Darstellung prüfen

Die genutzten Block­elemente besitzen bereits die Eigen­scaft display: block;. Wir notieren die Eigen­schaft an dieser Stelle noch­mals zu Übungs­zwecken und fügen die Eigen­schaften box-sizing: border-box; und overflow: hidden; hinzu.

2.Dev-Tools nutzen

Skizze 004
Box Modell - Skizze

Jede Box ver­fügt über einen Außen­abstand, einen Rand und einen Innen­abstand. Sehen Sie sich die folgende Ab­bildung an, die Abstände werden grafisch über­sichtlich dar­gestellt.

Beobachten und analysieren Sie Ver­änderungen am CSS Code mit diesem Werk­zeug!

3.Ausdehnung

Im ein­fachsten Fall können Höhe und Breite durch die Eigen­schaften height und width angepasst werden. Dabei können alle bekannten Ein­heiten (px,em, rem, %, vh, etc.) genutzt werden, wie auch bei den folgenden Werten.

4.Außenabstand

Äußere Abstände werden mit der Eigen­schaft margin definiert. Hierbei handelt es sich um den Abstand, den das betreffende Element zu seinen um­liegenden Elementen ein­hält. Der Abstand kann für jede Richtung definiert werden.

margin-top: 0.4rem;
margin-right: 0.6rem;
margin-bottom: 0.4rem;
margin-left: 0.6rem;
Listing ###: Syntax CSS

Die obigen Regeln können zusammen­gefasst werden. Die Reihen­folge der Werte ist: {oben / rechts / unten / links}

margin: 0.4rem 0.6rem 0.4rem 0.6rem;
Listing: Syntax CSS

Auch diese Regel lässt sich zusammen­fassen. Die Reihen­folge der Werte ist jetzt: {oben und unten / rechts und links}

margin: 0.4rem 0.6rem;
Listing: Syntax CSS

Wenn nur ein Wert an­gegeben wird, be­zieht sich dieser auf alle Richtungen:

margin: 0.6rem;
Listing: Syntax CSS

Mehr dazu ...

5.Rand

Die Ränder befinden sich zwischen den äußeren und inneren Abständen und werden mit der Eigen­schaft border gesetzt und können für jede Richtung angegeben werden.

Beachten Sie, dass es sich bei der Eigen­schaft um eine Zusammenfassung der drei Regeln: border-width; border-style und border-color handelt.

border: 1px dashed pink;
Listing: Syntax CSS

Mehr dazu ...

6.Innenabstand

Die inneren Abstände werden mit der Eigen­schaft padding definiert und können für jede Richtung angegeben werden. Hierbei handelt es sich um den Abstand, den der Inhalt vom Rand des Elements ein­hält.

padding-top: 0.4rem;
padding-right: 0.6rem;
padding-bottom: 0.4rem;
padding-left: 0.6rem;
Listing: Syntax CSS

Die obigen Regeln können zusammen­gefasst werden. Die Reihen­folge der Werte ist: {oben / unten / rechts / links}

padding: 0.4rem 0.6rem;
Listing: Syntax CSS

Auch diese Regel lässt sich zusammen­fassen. Die Reihen­folge der Werte ist jetzt: {oben und unten / rechts und links}

padding: 0.4rem 0.6rem;
Listing ###: Syntax CSS

Natürlich kann auch hier nur ein Wert notiert werden, dieser bezieht sich dann wieder auf alle vier Richtungen.

Mehr dazu ...

CSS anpassen

Mit diesem Wissen betrachten wir den CSS Code und erweitern das Layout des Grund­gerüstes:

header, aside, main, footer {
  display: block;

  box-sizing: border-box;
  overflow: hidden;

  height: auto;
  width: 100%;

  margin: 0;
    border: 1px dashed pink;
  padding: 0.4rem 0.6rem;
}
Listing: CSS Datei: ###.css

Die Element erhalten eine Breite von 100%. Prozentuale Angaben beziehen sich immer auf das über­geordnete Element, hier also auf das <body> Element! Die Höhe wird durch die Angabe von auto auto­matisch angepasst.

Der äußere Abstand wird mit der Eigen­schaft margin: 0; in diesem Fall zurück­gesetzt. Die Werte aus der Standard-CSS werden über­schrieben.

Die Elemente erhalten einen Rand, dieser umläuft durch die Angabe von box-sizing: border-box; den Inhalt und den inneren Abstand der Elemente. Der äußere Abstand zu anderen Objekten liegt außer­halb "der Box". Form und Farbe werden durch die CSS Regel border: 1px dashed pink; definiert.

Die inneren Abstände werden mit der Eigen­schaft padding: 0.4rem 0.6rem; angepasst. Durch diese Anweisung erhalten die Elemente einen oberen/unteren Abstand von 0.4rem und einen rechten/linken Abstand von 0.6rem.

Informationsbox

Passen Sie das section Element an. Analysieren Sie anschließend das Ergebnis der ver­änderten CSS - Eigen­schaften.

section {
  display: block;

  box-sizing: border-box;
  overflow: hidden;

  height: auto;
  width: 84%;

  margin: 1.2rem auto;
    border: 1px dashed green;
  padding: 0.6rem;
}
Listing: CSS

Weitere Analyse

In unserem Beispiel erhalten die header, aside, main, footer Bereiche gleiche Eigen­schaften. Die Selektoren können daher an­einander­gereiht notiert werden. Dazu werden die Selektoren per Komma von­einander getrennt, anschließend folgt ein Anweisungs­block.

header, aside, main, footer {
  ...
}
Listing: CSS

Das <section> Element erhält durch die Anweisung width: 84%; eine geringere Breite . Damit die <section> Elemente horizontal zentriert angezeigt werden, muss dem rechten und linken äußeren Abstand der Wert auto zugewiesen werden.

section {
  width: 84%;

  margin: 1.2rem auto;
}
Listing: CSS
Informationsbox

Betrachten Sie das Ergebnis in einem Browser und analysieren Sie die Aus­wirkungen. Behalten Sie dabei das Prinzip der Vererbung im Auge! Bereits an dieser Stelle nutzen wir dieses Prinzip. Bestimmte Eigen­schaften werden kaskaden­artig an geschachtelte Elemente über­tragen.

Wir erhalten eine ver­änderte Ansicht, die einzelnen Bereiche sind jetzt deutlich sicht­bar.

Box Model (Beispiel anzeigen)

CSS Datei

Mit relativ wenigen Anweisungen, haben wir ein solides Grund­gerüst ge­schaffen. Die CSS Datei könnte jetzt folgender­maßen aus­sehen:

/* -------- */
/* Bereiche */
/* ---------*/

body {
  font-family: 'Armata', 'Verdana', 'Arial', 'Helvetica', sans-serif;
  font-size: 1rem;

  line-height: 1.2;
}

header {
  background-color: black;
}

main {
  background-color: grey;
}

section {
  background-color: #ffffff;
}

aside {
  background-color: pink;
}

footer {
  background-color: black;
}


header, aside, main, footer {
  display: block;

  box-sizing: border-box;
  overflow: hidden;

  height: auto;
  width: 100%;

  margin: 0;
    border: 1px dashed pink;
  padding: 0.4rem 0.6rem;
}

section {
  display: block;

  box-sizing: border-box;
  overflow: hidden;

  height: auto;
  width: 84%;

  margin: 1.2rem auto;
    border: 1px dashed green;
  padding: 0.6rem;
}


/* -------- */
/* Elemente */
/* ---------*/

/* Überschrift */
h1 {
  font-size: 1.6rem;
  color: #B40000;
}

/* Text */
p {
  color: grey;
}
Listing: CSS
Informationsbox

Bearbeiten Sie das Thema: 2. CSS - Selektoren!