PFAD: ./module/css/css1/

DATEI: string(25) "00Inhaltsverzeichnis1.php"
DATEI: string(15) "01CSS-Basic.php"
DATEI: string(14) "02CSS-Font.php"
DATEI: string(14) "03CSS-Text.php"
DATEI: string(23) "04CSS-Aufzaehlungen.php"
DATEI: string(16) "04CSS-Rahmen.php"
DATEI: string(21) "05CSS-Hintergrund.php"
DATEI: string(19) "06CSS-Abstaende.php"
DATEI: string(16) "07Box-Modell.php"
DATEI: string(18) "08CSS-Tabellen.php"
DATEI: string(21) "09CSS-Multi-Media.php"
DATEI: string(28) "10Display-Float-Position.php"

css mit Adi Prinz

Das CSS-Box-Modell

Das CSS-Box-Modell beschreibt, wie der Browser die Größe und den Abstand eines Elements berechnet. Grundsätzlich wird jedes sichtbare HTML-Element als rechteckige Box dargestellt.

Eine Box besteht aus vier Bereichen:

  • Content: Inhaltsbereich mit Texten, Bildern oder anderen Inhalten
  • Padding: Innenabstand zwischen Inhalt und Rahmen
  • Border: Rahmen um Inhalt und Innenabstand
  • Margin: Außenabstand zu benachbarten Elementen

Das Box-Modell gilt auch für Inline-Elemente. Bei ihnen werden width und height normalerweise nicht berücksichtigt. Außerdem beeinflussen obere und untere Außenabstände den normalen Textfluss nicht. Mit display: inline-block lassen sich Breite und Höhe hingegen festlegen.

Darstellung des CSS-Box-Modells mit Content, Padding, Border und Margin
Darstellung des CSS-Box-Modells
Quelle: W3Schools.com

Standardmäßige Größenberechnung

Standardmäßig verwendet ein Element box-sizing: content-box. Die mit width und height festgelegten Werte gelten dabei nur für den Inhaltsbereich.

div {
  width: 300px;
  padding: 25px;
  border: 25px solid #ff0000;
  margin: 25px;
}

Die sichtbare Box vom linken bis zum rechten Rand ist in diesem Beispiel 400 Pixel breit:

300px Content
+ 50px Padding
+ 50px Border
= 400px sichtbare Breite

Werden zusätzlich die beiden Außenabstände berücksichtigt, belegt das Element horizontal insgesamt 450 Pixel:

400px sichtbare Breite
+ 50px Margin
= 450px gesamter Platzbedarf

Die Höhe richtet sich nach dem Inhalt, weil keine feste height angegeben wurde.

Zusammenfallende Außenabstände

Vertikale Außenabstände benachbarter Blockelemente im normalen Dokumentfluss können zusammenfallen. Dieses Verhalten wird Margin Collapsing genannt.

h3 {
  margin: 20px 0;
}

p {
  margin: 12px 0;
}

<h3>Überschrift</h3>
<p>Absatz eins</p>
<p>Absatz zwei</p>

Zwischen der Überschrift und dem ersten Absatz entstehen nicht 32 Pixel, sondern 20 Pixel Abstand. Zwischen den beiden Absätzen entstehen nicht 24 Pixel, sondern 12 Pixel.

Bei zwei positiven Außenabständen wird der größere Wert verwendet. Treffen positive und negative Außenabstände aufeinander, wird der negative Wert vom positiven Wert abgezogen. Sind alle beteiligten Außenabstände negativ, wird der am stärksten negative Wert verwendet.

Regeln für zusammenfallende Außenabstände

  • Nur vertikale Außenabstände, also margin-top und margin-bottom, können zusammenfallen.
  • Horizontale Außenabstände fallen nicht zusammen.
  • Vertikale Außenabstände benachbarter Blockelemente im normalen Dokumentfluss können zusammenfallen.
  • Der obere Außenabstand eines Elternelements kann mit dem oberen Außenabstand seines ersten Kindelements zusammenfallen.
  • Der untere Außenabstand eines Elternelements kann mit dem unteren Außenabstand seines letzten Kindelements zusammenfallen.
  • Außenabstände von absolut positionierten Elementen und Floats fallen nicht zusammen.
  • Außenabstände von Flex- und Grid-Elementen fallen nicht zusammen.
  • Zwischen einem Elternelement und seinem Kind verhindert beispielsweise ein Rahmen, ein Innenabstand oder ein neuer Formatierungskontext das Zusammenfallen.

Alternatives Box-Modell (box-sizing)

Mit box-sizing wird festgelegt, ob sich die Angaben width und height nur auf den Inhalt oder auch auf Innenabstand und Rahmen beziehen.

Eigenschaft Bedeutung Mögliche Werte
box-sizing Bestimmt die Berechnung der Breiten- und Höhenangaben einer Box content-box, border-box, initial, inherit

box-sizing

Bei content-box gelten width und height nur für den Inhaltsbereich. Padding und Border werden zur angegebenen Größe hinzugerechnet.

Bei border-box sind Content, Padding und Border bereits in der angegebenen Breite und Höhe enthalten. Der Außenabstand margin gehört jedoch nicht dazu.

Mögliche Werte von box-sizing

  • content-box: Breite und Höhe gelten nur für den Inhaltsbereich; dies ist der Standardwert.
  • border-box: Breite und Höhe enthalten Content, Padding und Border.
p {
  width: 400px;
  padding: 25px;
  border: 25px solid #ff0000;
  box-sizing: border-box;
}

Das Element ist in diesem Beispiel vom linken bis zum rechten Rahmen insgesamt 400 Pixel breit. Für den Inhalt verbleiben 300 Pixel:

400px Gesamtbreite
- 50px Padding
- 50px Border
= 300px Content

box-sizing global verwenden

In vielen Projekten wird border-box für alle Elemente verwendet. Dadurch lassen sich Abmessungen einfacher berechnen.

html {
  box-sizing: border-box;
}

*,
*::before,
*::after {
  box-sizing: inherit;
}

Auch die Pseudoelemente ::before und ::after werden dabei berücksichtigt.

Außenlinie (Outline)

Eine Outline ist eine Linie, die außerhalb des Rahmens eines Elements gezeichnet wird. Im Gegensatz zu einem Border beansprucht sie keinen zusätzlichen Platz und beeinflusst daher die Größe und Position anderer Elemente nicht.

Outlines werden häufig verwendet, um den Tastaturfokus eines Links, Buttons oder Formularelements sichtbar zu machen.

Eigenschaft Bedeutung Mögliche Werte
outline-color Farbe der Außenlinie Farbangabe, auto, invert, initial, inherit
outline-style Linienart der Außenlinie auto, none, dotted, dashed, solid, double, groove, ridge, inset, outset
outline-width Stärke der Außenlinie thin, medium, thick, Längenangabe
outline-offset Abstand zwischen Border und Outline Längenangabe, auch negative Werte
outline Kurzschreibweise für die Außenlinie outline-width, outline-style, outline-color

outline

Die Eigenschaften einer Outline können einzeln oder mit der Kurzschreibweise outline angegeben werden.

p {
  border: 1px solid red;
  outline: 4px dotted green;
  outline-offset: 3px;
}

In diesem Beispiel besitzt jedes p-Element einen roten Rahmen und eine grüne, gepunktete Außenlinie. Mit outline-offset wird ein Abstand zwischen Rahmen und Außenlinie erzeugt.

Outline als Fokusmarkierung

Bei der Bedienung mit der Tastatur zeigt eine Outline, welches Element gerade den Fokus besitzt. Dieser Fokusstil sollte aus Gründen der Barrierefreiheit nicht ersatzlos entfernt werden.

a:focus-visible,
button:focus-visible {
  outline: 3px solid #ff8c00;
  outline-offset: 3px;
}

Wird die standardmäßige Outline mit outline: none entfernt, muss sie durch eine mindestens ebenso gut sichtbare Fokusmarkierung ersetzt werden.

Overflow

Wenn Inhalt nicht in die festgelegten Abmessungen eines Elements passt, entsteht Überlauf. Mit den Overflow-Eigenschaften wird gesteuert, ob dieser Inhalt sichtbar, abgeschnitten oder scrollbar wird.

Eigenschaft Bedeutung Mögliche Werte
overflow Kurzschreibweise für beide Achsen visible, hidden, clip, scroll, auto
overflow-x Überlauf in horizontaler Richtung visible, hidden, clip, scroll, auto
overflow-y Überlauf in vertikaler Richtung visible, hidden, clip, scroll, auto
overflow-inline Überlauf in Inline-Richtung visible, hidden, clip, scroll, auto
overflow-block Überlauf in Block-Richtung visible, hidden, clip, scroll, auto
overflow-clip-margin Clip-Grenze bei overflow: clip Längenangabe

Werte für overflow

  • visible: Inhalt bleibt sichtbar; Standardwert
  • hidden: Inhalt wird abgeschnitten; die Box bleibt ein Scroll-Container und kann programmgesteuert gescrollt werden
  • clip: Inhalt wird abgeschnitten, ohne einen Scroll-Container zu erzeugen
  • scroll: Inhalt wird abgeschnitten und die Box ist scrollbar; Scrollleisten können dauerhaft erscheinen
  • auto: Scrollleisten erscheinen bei Bedarf
.box {
  width: 200px;
  height: 200px;
  overflow: auto;
}
    

overflow-x und overflow-y

Mit overflow-x und overflow-y wird der Überlauf je Achse gesteuert. Werden visible oder clip mit einem anderen Wert für die zweite Achse kombiniert, kann der berechnete Wert angepasst werden.

.box {
  overflow-x: hidden;
  overflow-y: auto;
}
    

overflow-inline und overflow-block

Die logischen Eigenschaften richten sich nach der Schreibrichtung. overflow-inline steuert den Überlauf in Inline-Richtung und overflow-block den Überlauf in Block-Richtung.

text-overflow

text-overflow legt fest, wie abgeschnittener Inline-Inhalt markiert wird. Für die bekannte Darstellung mit Auslassungspunkten sind zusätzlich overflow: hidden und ein verhinderter Zeilenumbruch erforderlich.

.title {
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
}