CSS dient dazu, das Aussehen und die Ge­stal­tung von Webseiten zu de­fi­nie­ren. Mit Cascading Style Sheets trennen Sie Design und Inhalt von­ein­an­der und sorgen so für eine klare, flexible Struktur. In diesem Tutorial erfahren Sie, wie Sie mit CSS das Layout, die Farben und die Ty­po­gra­fie Ihrer Website gezielt steuern.

Trennung von Inhalt und Prä­sen­ta­ti­on

In Kom­bi­na­ti­on mit HTML dient CSS der Trennung von Inhalt und Prä­sen­ta­ti­on.

Die Hypertext Markup Language (HTML) kommt zum Einsatz, um Text­do­ku­men­te mit In­for­ma­tio­nen an­zu­rei­chern, die einer se­man­ti­schen Struk­tu­rie­rung der Text­ele­men­te dienen. Die Aus­zeich­nungs­spra­che erzeugt somit die Grundlage einer jeden Website: den HTML-Code. Dieser be­schreibt, aus welchen HTML-Elementen sich ein Dokument zu­sam­men­setzt (z. B. <body>, <header>, <footer>) und wie die In­for­ma­tio­nen zu in­ter­pre­tie­ren sind (z. B. Über­schrift <h1> oder Text­ab­satz <p>).

Ur­sprüng­lich bot auch HTML ru­di­men­tä­re Ge­stal­tungs­an­wei­sun­gen. Doch diese gelten mit HTML5 als überholt und sollten heute nicht mehr verwendet werden. Statt­des­sen bedient man sich der Style­sheet-Sprache CSS (Cascading Style Sheets), um Dar­stel­lungs­vor­ga­ben gesondert zu verwalten.

Profi-Website in Sekunden dank KI.
  • Profi-Website in Sekunden dank KI
  • Aus tausenden Vorlagen auswählen
  • 30 Tage kostenlos testen

Was ist CSS?

Wie HTML wird auch CSS in Textform notiert. Dies kann direkt im HTML-Dokument erfolgen (inline für jedes Dokument oder einmalig im HTML-Kopf). In der Regel binden Web­de­si­gne­rin­nen und -designer jedoch separate CSS-Dokumente ein, um Webseiten zu for­ma­tie­ren. Das Ergebnis ist ein über­sicht­li­cher Quellcode, bei dem red­un­dan­te Ge­stal­tungs­an­wei­sun­gen durch Verweise auf separate Style­sheets vermieden werden. Je weniger Wie­der­ho­lun­gen, desto schlanker der Quellcode.

Sind An­pas­sun­gen am Design notwendig, werden diese an den zentralen CSS-Dateien vor­ge­nom­men. Es ist somit nicht nötig, jedes einzelne HTML-Dokument durch­zu­se­hen und separat an­zu­pas­sen. Als Living Standard wird CSS vom World Wide Web Con­sor­ti­um (W3C) kon­ti­nu­ier­lich wei­ter­ent­wi­ckelt.

Grund­auf­bau: Die CSS-Syntax

Die zentrale Aufgabe von CSS ist es, das Design einer Website zu de­fi­nie­ren. Dazu werden den zu­grun­de­lie­gen­den HTML-Elementen mithilfe der Style­sheet-Sprache Ei­gen­schaf­ten (Pro­per­ties) mit gewissen Werten zu­ge­ord­net. Der Grund­auf­bau einer Ge­stal­tungs­an­wei­sung ent­spricht folgendem Schema:

Selektor { Deklaration }
css

Beim Selektor handelt es sich um eine Re­prä­sen­ta­ti­on des HTML-Elements, auf das sich die Ge­stal­tungs­an­wei­sung bezieht. Die De­kla­ra­ti­on besteht aus einer Ei­gen­schaft-Wert-Kom­bi­na­ti­on, die nach­fol­gend in ge­schweif­ten Klammern notiert wird. Jede De­kla­ra­ti­on endet mit einem Semikolon:

HTML-Elemente { Eigenschaft: Wert; }
css

Nach diesem Schema lässt sich bei­spiels­wei­se einer Über­schrift eine Schrift­far­be wie Rot zuweisen:

h2 { color: red; }
css

Web­de­si­gne­rin­nen und -designer haben die Mög­lich­keit, dem Selektor eine einzelne Ei­gen­schaft zu­zu­wei­sen oder um­fang­rei­che Re­gel­sät­ze zu de­fi­nie­ren, die de­tail­lier­te Ge­stal­tungs­an­wei­sun­gen be­inhal­ten. Der Übersicht halber hat sich eine Schreib­wei­se etabliert, bei der alle Pro­per­ties eines Re­gel­sat­zes un­ter­ein­an­der notiert werden:

Selektor {
Eigenschaft1: Wert;
Eigenschaft2: Wert;
Eigenschaft3: Wert;
}
css

In der Praxis könnte ein solches Ei­gen­schafts­bün­del fol­gen­der­ma­ßen aussehen:

h2 {
color: #ff0000;
font-family: Helvetica, sans-serif;
font-size: 19px;
font-weight: bold;
text-align: center;
}
css

Ein Regelsatz kann außerdem mehrere Se­lek­to­ren spe­zi­fi­zie­ren. Im folgenden Fall werden diese durch Kommata getrennt vor der De­kla­ra­ti­on notiert:

Selektor1, Selektor2 { Deklaration }
css

CSS-Se­lek­to­ren

CSS un­ter­stützt diverse Se­lek­to­ren, die eine be­nut­zer­de­fi­nier­te Zuweisung von Ge­stal­tungs­an­wei­sun­gen er­mög­li­chen. Für den Einstieg genügt es, sich mit Typen-, Klassen- ID- und Uni­ver­sal­se­lek­to­ren vertraut zu machen. Beachten Sie, dass CSS case-sensitive ist, sodass die Groß- und Klein­schrei­bung eine Rolle spielt.

Art des Selektors CSS-Schreib­wei­se Be­schrei­bung Spe­zi­fi­tät
Ty­pen­se­lek­tor HTML-Element (z. B.h2) Ein Ty­pen­se­lek­tor ent­spricht dem Namen des Elements, auf das er sich bezieht. For­ma­tie­run­gen werden auf alle HTML-Elemente desselben Typs an­ge­wen­det. 1
Klas­sen­se­lek­tor .beispiel Ein Klas­sen­se­lek­tor spricht alle Elemente einer be­stimm­ten klasse an. Klas­sen­se­lek­to­ren werden mit einem Punkt (.) und einem be­lie­bi­gen Klas­sen­na­men gebildet: .beispiel- Klassen werden an HTML-Elemente über das class-Attribut (class="beispiel") vergeben. 10
ID #beispiel Ein ID-Selektor spricht ein einziges Element mit einer ein­zig­ar­ti­gen ID an. Die In­te­gra­ti­on in den HTML-Quellcode erfolgt mithilfe des id-Attributs (id="beispiel"). 100
Uni­ver­sal­se­lek­tor * Der Uni­ver­sal­se­lek­tor Asterisk (*) spricht alle HTML-Elemente eines Dokuments an. 0
Hinweis

Wenn mehrere Regeln auf dasselbe Element zutreffen, bestimmt die Spe­zi­fi­tät eines Selektors, welche Regel an­ge­wen­det wird. Jede Selektor-Art hat dabei einen be­stimm­ten Wert, der zur Be­rech­nung der Spe­zi­fi­tät beiträgt.

Ty­pen­se­lek­tor

Ver­deut­li­chen lässt sich der Einsatz ver­schie­de­ner CSS-Se­lek­to­ren an Bei­spie­len. Folgender Code zeigt den Ty­pen­se­lek­tor h2 mit De­kla­ra­ti­on:

h2 {
color: #305796;
font-family: Helvetica, sans-serif;
}
css

Die For­ma­tie­rung bezieht sich auf alle HTML-Elemente des Typs h2.

Klas­sen­se­lek­tor

Al­ter­na­tiv kann die CSS-For­ma­tie­rung anhand eines Klas­sen­se­lek­tors erfolgen. Dies er­mög­licht De­si­gne­rin­nen und Designern, HTML-Elemente un­ab­hän­gig vom je­wei­li­gen Typ mit denselben Ge­stal­tungs­an­wei­sun­gen zu versehen.

.content {
color: #ff0000;
font-family: Helvetica, sans-serif;
}
css

Die For­ma­tie­rung bezieht sich auf alle HTML-Elemente, denen die Klasse .content zu­ge­wie­sen wurde. Diese Zuweisung erfolgt im HTML-Code nach folgendem Schema:

<p class="special-text">Beispieltext</p>
html
Hinweis

In HTML werden die Klas­sen­na­men ohne Punkt notiert.

ID-Selektor

Soll sich eine Ge­stal­tungs­an­wei­sung lediglich auf ein einziges Element im HTML-Quellcode beziehen, bietet sich ein ID-Selektor an. Das folgende Beispiel zeigt die For­ma­tie­rung eines Na­vi­ga­ti­ons­be­reichs:

#navigation {
font-family: Helvetica, sans-serif;
background-color: #8ad8d4;
border: 2px solid #448278;
}
css

Die Zuweisung der For­ma­tie­rung erfolgt im HTML-Quellcode ohne Hashtag:

<div id="navigation">
<ul>
<li><a href="index.htm">Startseite</a></li>
<li><a href="impressum.htm">Impressum</a></li>
</ul>
</div>
html

Der Vorteil von ID-Se­lek­to­ren ist, dass auf einen Blick er­sicht­lich wird, bei welchen Ab­schnit­ten im Quelltext es sich um einmalige Bereiche handelt.

Uni­ver­sal­se­lek­tor

Soll sich eine Ge­stal­tungs­an­wei­sung auf alle Elemente eines HTML-Dokuments beziehen, kommt der Asterisk (*) zum Einsatz:

* {
font-family: Helvetica, sans-serif;
}
css

Sämtliche Text­ele­men­te werden vom Web­brow­ser in der Schrift­art Helvetica dar­ge­stellt.

CSS in HTML einbinden

Damit ein Browser CSS-For­ma­tie­run­gen be­rück­sich­ti­gen kann, müssen die Ge­stal­tungs­an­wei­sun­gen mit dem HTML-Quellcode verknüpft werden. An­wen­de­rin­nen und Anwendern stehen dazu drei Mög­lich­kei­ten offen:

  • Die direkte In­te­gra­ti­on der CSS-De­kla­ra­ti­on in HTML-Tags
  • Die CSS-Aus­zeich­nung im HTML-Kopf
  • Der Verweis auf ein separates Style­sheet

Der letzt­ge­nann­te Lö­sungs­vor­schlag gilt als Königsweg: In der Praxis werden Style­sheets meist als externe Text­da­tei­en angelegt und an­schlie­ßend ein­ge­bun­den.

CSS-De­kla­ra­ti­on in HTML-Tags

Soll eine CSS-De­kla­ra­ti­on eine einzige Stelle im Quelltext for­ma­tie­ren, kann diese mithilfe des style-Attributs direkt im ein­lei­ten­den Tag des HTML-Elements angeführt werden, auf das sich die Ge­stal­tungs­an­wei­sung beziehen soll. Man spricht in diesem Fall von „Inline-Style“.

<h2 style="color: red;">Zwischenüberschrift</h2>
html

Dies hat den Vorteil, dass man kein eigenes Style­sheet anlegen muss, der Selektor wegfällt und eine solche Zuweisung eine hohe Priorität (Wert 1000) hat. Spä­tes­tens wenn ein ganzer Regelsatz zum Einsatz kommt, wird diese Art der For­ma­tie­rung jedoch un­über­sicht­lich und redundant.

CSS-Aus­zeich­nung im HTML-Kopf

Soll ein und dieselbe Ge­stal­tungs­an­wei­sung innerhalb eines HTML-Dokuments mehrmals für das gleiche Element genutzt werden (z. B. für alle h2 der Webpage), ist die CSS-De­kla­ra­ti­on im HTML-Tag in­ef­fi­zi­ent. Statt­des­sen bietet es sich an, die ent­spre­chen­den Ge­stal­tungs­an­ga­ben mithilfe des style-Elements einmalig im HTML-Kopf des Dokuments zu de­fi­nie­ren:

<!DOCTYPE html>
<html lang="de">
<head>
<style>
h2 {
color: #ff0000;
font-family: 'Helvetica Neue', sans-serif;
font-size: 19px;
font-weight: bold;
text-align: center;
}
</style>
</head>
<body>
<h2>Zwischenüberschrift1</h2>
[…]
<h2>Zwischenüberschrift2</h2>
[…]
</body>
</html>
html

Der Regelsatz innerhalb des style-Elements wird au­to­ma­tisch auf alle nach­fol­gen­den h2-Elemente an­ge­wen­det. Wenn das Element h2 auch auf anderen Webpages des gleichen On­line­pro­jekts mit den hier de­fi­nier­ten Ge­stal­tungs­an­wei­sun­gen zum Einsatz kommen soll, können Sie die Anweisung einfach über eine zentrale CSS-Datei de­fi­nie­ren.

Verweis auf ein separates Style­sheet

Werden Ge­stal­tungs­an­wei­sun­gen in einem separaten Style­sheet definiert, muss man dieses in das zu­grun­de­lie­gen­de HTML-Dokument einbinden. Gelöst wird dies mit dem HTML-Element <link>:

<link rel="stylesheet" href="beispiel.css">
html

Das link-Element enthält die ob­li­ga­to­ri­schen Attribute rel und href und kann optional mit den At­tri­bu­ten type und media ergänzt werden.

Attribute des link-Elements Be­schrei­bung
rel Das rel-Attribut definiert den Be­zie­hungs­typ des Elements. Der Wert stylesheet gibt an, dass ein Style­sheet ein­ge­bun­den werden soll.
href Das href-Attribut re­fe­ren­ziert die Datei, die als Style­sheet ein­ge­bun­den werden soll.
type Das optionale Attribut type be­schreibt den Me­di­en­ty­pe der ein­zu­bin­den­den Datei – im Fall von CSS text/css.
media Mit dem media-Attribut haben kann man de­fi­nie­ren, dass das re­fe­ren­zier­te Style­sheet nur bei einem be­stimm­ten Aus­ga­be­me­di­um verwendet werden soll. Dies er­mög­licht es, un­ter­schied­li­che Style­sheets für ver­schie­de­ne Endgeräte zur Verfügung zu stellen. Mögliche Werte sind bei­spiels­wei­se screen oder print.

CSS-Farb­an­ga­ben

Wie im ein­lei­ten­den Kapitel an­ge­spro­chen, lassen sich Farb­zu­wei­sun­gen via CSS anhand der eng­li­schen Farb­wör­ter de­fi­nie­ren. In der Praxis findet man solche Ge­stal­tungs­an­wei­sun­gen jedoch eher selten. Häufiger kommt das RGB-Modell zum Einsatz. Dieses bietet deutlich mehr Ab­stu­fun­gen und erlaubt Website-Be­trei­ben­den somit, de­tail­lier­te Farb­ein­stel­lun­gen zu treffen. Die ent­spre­chen­den Codes lassen sich über einen Farb­wäh­ler ermitteln, den Google z. B. in Form einer Quick Answer bietet.

Bild: Farbwähler in der Google-Suchmaschine
Mit einem Farb­wäh­ler können Sie sich die Farbwerte praktisch anzeigen lassen.

Farb­an­tei­le werden im RGB-Modell durch De­zi­mal­wer­te zwischen 0 und 255 definiert. Während ein Wert von 0 bedeutet, dass eine Farbe keinen Anteil an der be­tref­fen­den Grund­far­be hat, steht ein Wert von 255 für einen maximalen Anteil.

Seit CSS3 lassen sich die RGB-Werte um einen vierten Wert, den so­ge­nann­ten Alpha-Kanal (a), erweitern. Dieser gibt die Deckkraft der Farbe an und wird in Werten von 0 bis 1 (z. B. 0.8) angegeben. RGB-Farben werden in CSS also fol­gen­der­ma­ßen definiert:

rgba(Rotwert, Grünwert, Blauwert, Deckkraft)
css

So ergeben folgende RGBA-Werte bei­spiels­wei­se die Grund­far­be Blau mit einer Trans­pa­renz von 50 Prozent.

rgba(0, 0, 255, 0.5)
css
Hinweis

Sie können RGB-Werte auch he­xa­de­zi­mal angeben. Das Grund­sche­ma eines he­xa­de­zi­ma­len Farbcodes besteht aus einem Hashtag (#) gefolgt von sechs He­xa­de­zi­mal­zah­len, die in Zwei­er­blö­cken je eine Farbe des RGB-Farbraums (Rot, Grün, Blau) re­prä­sen­tie­ren:

Die wich­tigs­ten CSS-Pro­per­ties

Mit CSS stehen Ihnen viele Pro­per­ties zur Auswahl, mit denen sich Ge­stal­tungs­an­wei­sun­gen für HTML-Elemente de­fi­nie­ren lassen. Jede Property ak­zep­tiert einen in der Spe­zi­fi­ka­ti­on fest­ge­leg­ten Satz an Werten. Der Übersicht halber werden CSS-Pro­per­ties in An­wen­dungs­be­rei­che ge­glie­dert. Wir kon­zen­trie­ren uns auf die wich­tigs­ten Ei­gen­schaf­ten.

Schrift­bild

Zu den zentralen Merkmalen einer Website gehört das Schrift­bild. CSS bietet Ihnen diverse Mög­lich­kei­ten, die Schrif­t­ele­men­te einer HTML-Seite zu for­ma­tie­ren.

font-family

Soll für die Text­ele­men­te einer Webseite eine bestimmte Schrift­art (Font) definiert werden, kommt die CSS-Property font-family zum Einsatz. Diese erlaubt Ihnen, einen so­ge­nann­ten Schrift­ar­ten­sta­pel (Font Stack) anzulegen. Dabei handelt es sich um eine prio­ri­sier­te Liste ge­eig­ne­ter Fonts. Schrift­ar­ten­sta­pel sind so aufgebaut, dass zuerst die ge­wünsch­te Schrift­art genannt wird und nach­fol­gend eine Liste passender Dar­stel­lungs­al­ter­na­ti­ven:

.content {
font-family: Georgia, Garamond, serif;
}
css

Das Beispiel zeigt eine Ge­stal­tungs­an­wei­sung in der CSS-Datei. Als prio­ri­sier­te Schrift­art ist Georgia definiert, als al­ter­na­ti­ve Schrift­art Garamond. Ein Web­brow­ser wird somit an­ge­wie­sen, den Text­ab­schnitt in Garamond dar­zu­stel­len, sofern die Schrift­art Georgia auf dem System nicht in­stal­liert ist.

Tipp

Es empfiehlt sich, als Fallback-Me­cha­nis­mus eine ge­ne­ri­sche Schrift­fa­mi­lie zu de­fi­nie­ren. Hierbei handelt es sich um einen all­ge­mei­nen Platz­hal­ter­na­me für eine Gruppe von ähnlichen Schrift­ar­ten.

font-style

Die CSS-Property font-style bezieht sich auf den Schrift­stil eines Text­ab­sat­zes und bietet Ihnen die Mög­lich­keit, Ge­stal­tungs­an­wei­sun­gen zur Neigung derart aus­ge­zeich­ne­ter Schrift­zei­chen zu de­fi­nie­ren.

Werte für Text­nei­gung Be­schrei­bung
normal normaler Schrift­stil (Stan­dard­ein­stel­lung)
italic kursive Schrift
oblique schräg gestellte Schrift (auch wenn Schrift keine Kur­siv­va­ri­an­te hat)

Folgendes Beispiel zeigt eine Ge­stal­tungs­an­wei­sung für den Schrift­stil „kursiv“:

.special-content {
font-family: Arial;
font-style: italic;
}
css

font-variant

Die CSS-Property font-variant kommt zum Einsatz, um Schrift­va­ri­an­ten zu de­fi­nie­ren.

Werte für Schrift­va­ri­an­ten Be­schrei­bung
normal normale Schrift­va­ri­an­te (Stan­dard­ein­stel­lung)
small-caps Ka­pi­täl­chen (Groß­buch­sta­be in der Höhe der kleinen Buch­sta­ben) für Klein­buch­sta­ben
all-small-caps Ka­pi­täl­chen für Groß- und Klein­buch­sta­ben

Folgendes Beispiel legt die Schrift­va­ri­an­te small-caps fest:

.content {
font-family: Arial;
font-variant: small-caps;
}
css

font-size

Mit der CSS-Property font-size wird die Dar­stel­lungs­grö­ße von Text­ele­men­ten definiert. Dies kann in absoluten Werten oder in Relation zu um­ge­ben­den Elementen geschehen. Angegeben wird die Höhe der Schrift­zei­chen, der so­ge­nann­te Schrift­grad. Web­de­si­gne­rin­nen und Web­de­si­gnen stehen dazu diverse Schreib­wei­sen und Maß­ein­hei­ten zur Verfügung.

Absolute Maß­ein­hei­ten

Absolute Maß­ein­hei­ten ori­en­tie­ren sich an phy­si­schen Län­gen­ma­ßen. Auf dem Bild­schirm rechnen Browser jedoch alle diese Einheiten in Pixel um und legen dabei eine Auflösung von 96 dpi zugrunde. Außer px spielen absolute Maß­ein­hei­ten im Webdesign daher kaum eine Rolle. Sinn haben sie al­len­falls bei der Druck­aus­ga­be.

Einheit CSS-Schreib­wei­se Be­schrei­bung
Pixel px Die Maß­ein­heit px ent­spricht der Größe eines Elements in Pixeln. Pixel werden auf Displays in Relation zur Punkt­dich­te (z. B. dots per inch, dpi) dar­ge­stellt. Als Richtwert für die Ska­lie­rung gilt: 1 CSS-Pixel ent­spricht 1/96 eines Zolls. Der User kann die Zuordnung von px-Einheit zu Ge­rä­t­epi­xel durch Zoomen im Browser verändern.
Zen­ti­me­ter cm Größe in Zen­ti­me­tern
Mil­li­me­ter mm Größe in Mil­li­me­tern
Zoll in Größe in Zoll (1 in = 2,54 cm)
Punkt pt Größe in Punkt (1 pt ent­spricht 1/72 eines Zolls)
Pica pc Größe in Pica (1 Pica ent­spricht 12 Punkt)

Darüber hinaus lässt sich die Schrift­grö­ße anhand absoluter Schlüs­sel­wör­ter de­fi­nie­ren:

Schlüs­sel­wort Be­schrei­bung Beispiel
xx-small winzig 9 px
x-small sehr klein 10 px
small klein 13 px
medium mittel (vor­ein­ge­stell­te Schrift­grö­ße des Browsers) 16 px
large groß 19 px
x-large sehr groß 24 px
xx-large riesig 32 px

Relative Maß­ein­hei­ten

Bei relativen Maß­ein­hei­ten handelt es sich um Angaben der Schrift­grö­ße, die in Ab­hän­gig­keit zu einer bereits fest­ge­leg­ten Größe ermittelt werden. HTML-Elemente erben ihre Schrift­grö­ße vom je­wei­li­gen El­tern­ele­ment. Referenz für eine relative Schrift­grö­ße kann zudem ein tech­ni­scher Richtwert wie die Dis­play­grö­ße eines Endgeräts oder ein Stan­dard­wert im Web­brow­ser sein.

Einheit CSS-Schreib­wei­se Be­schrei­bung
Pro­zent­an­ga­be % Die Maß­ein­heit % gibt die Schrift­grö­ße in pro­zen­tua­ler Ent­spre­chung zur geerbten Schrift­grö­ße an.
em (Font-Höhe) em Auch die Maß­ein­heit em steht in Relation zum El­tern­ele­ment. Dabei ent­spricht 1em 100 % der geerbten Schrift­grö­ße. Wurde für das El­tern­ele­ment keine Schrift­grö­ße definiert, wird die Standard-Schrift­grö­ße des Geräts verwendet.
x-Höhe ex Re­fe­renz­wert für die Maß­ein­heit ex ist die Höhe des Klein­buch­sta­bens x der gewählten Schrift­art. Ist für eine Schrift­art keine x-Höhe definiert, gilt 1ex = 0.5em.
Root-em rem Die Maß­ein­heit rem bezieht sich auf das Wur­zel­ele­ment eines Dokuments (z. B. das HTML-Element). 1 rem ent­spricht 100 % der Schrift­grö­ße, die für das Wur­zel­ele­ment fest­ge­legt wurde.
Viewport-Breite vw Die Maß­ein­heit vw ori­en­tiert sich an der Breite des An­zei­ge­be­reichs (Viewport) eines dar­stel­len­den Geräts. Dabei gilt: 1vw = 1 % der Viewport-Breite.
Viewport-Höhe vh Die Maß­ein­heit vh ori­en­tiert sich an der Höhe des An­zei­ge­be­reichs eines dar­stel­len­den Geräts. Dabei gilt: 1vh = 1 % der Viewport-Höhe.

Die Schrift­grö­ße lässt sich auch anhand relativer Schlüs­sel­wör­ter de­fi­nie­ren. Als Richtwert gilt hier die vor­ein­ge­stell­te Schrift­grö­ße des Browsers.

Relativ Be­schrei­bung
smaller Das aktuelle Element wird kleiner dar­ge­stellt als das El­tern­ele­ment.
larger Das aktuelle Element wird größer dar­ge­stellt als das El­tern­ele­ment.

Um eine optimale Dar­stel­lung der Schrift­grö­ße auf ver­schie­de­nen Nut­zer­ge­rä­ten si­cher­zu­stel­len, empfiehlt es sich, relative Maß­ein­hei­ten wie em oder % zu nutzen.

Das Grund­sche­ma der Schrift­grö­ßen­for­ma­tie­rung via CSS ent­spricht folgendem Code­bei­spiel:

.content {
font-size: 19em;
}
css

line-height

Die CSS-Property line-height wird verwendet, um die Zei­len­hö­he eines Text­ab­sat­zes zu de­fi­nie­ren. Es gelten die gleichen Maß­ein­hei­ten wie bei font-size, wobei sich Pro­zent­an­ga­ben auf die font-size des je­wei­li­gen Textes beziehen. Al­ter­na­tiv können Sie die line-height in Zahlen ohne Maß­ein­heit angeben. Weitere mögliche Werte sind normal (Stan­dard­ein­stel­lung) und inherit (dem El­tern­ele­ment ent­spre­chend).

Eine line-height von 1.5 ent­spricht bei­spiels­wei­se einer Zei­len­hö­he von 150 Prozent der je­wei­li­gen Schrift­hö­he oder 1.5em.

.content {
line-height: 1.5;
}
css

font-weight

Die CSS-Property font-weight definiert die Strich­stär­ke eines Text­ele­ments. De­si­gne­rin­nen und Designer nutzen diese, um Text­stel­len gefettet dar­zu­stel­len. Werte lassen sich absolut oder relativ zum El­tern­ele­ment angeben.

Absolute Werte für die font-weight-Property Be­schrei­bung
1-1000 nu­me­ri­sche Werte von 1 (extradünn) bis 1000 (extrafett)
normal normale Strich­stär­ke (ent­spricht dem Wert 400)
bold fett (ent­spricht dem Wert 700)

Relevant sind die Zahlwerte nur bei Webfonts. In der Regel genügen daher zwei un­ter­schied­li­che Strich­stär­ken: normal und bold.

.content {
font-weight: normal;
}
.content {
font-weight: bold;
}
css

Relative Werte für die CSS-Property font-weight de­fi­nie­ren die Strich­stär­ke eines Text­ele­ments im Ver­hält­nis zur geerbten Strich­stär­ke des El­tern­ele­ments.

Relative Werte für die font-weight-Property Be­schrei­bung
bolder fetter als im El­tern­ele­ment
lighter dünner als im El­tern­ele­ment

Text­for­ma­tie­rung

Neben der For­ma­tie­rung des Schrift­bilds stehen Ihnen bei CSS diverse Pro­per­ties zur Text­for­ma­tie­rung zur Verfügung. Diese er­mög­li­chen es, Ein­stel­lun­gen zur Text­aus­rich­tung sowie zum Abstand zwischen Zeichen und Wörtern vor­zu­neh­men oder Text­ele­men­te mit De­ko­ra­tio­nen zu versehen.

text-align

Die CSS-Property text-align dient der Aus­rich­tung von Text- und Inline-Elementen – also Elementen, die im Textfluss enthalten sind, z. B. Bilder oder Buttons. Übliche Werte sind:

  • left (links­bün­dig)
  • right (rechts­bün­dig)
  • center (zentriert)
  • justify (Blocksatz)
  • inherit (wie El­tern­ele­ment).

Folgender Code bewirkt eine zen­trier­te Aus­rich­tung des Bei­spiel­tex­tes:

.content {
text-align: center;
}
css

Weitere Werte für die text-align-Property de­fi­nie­ren die Text­aus­rich­tung in Relation zur Lauf­rich­tung eines Textes (direction).

Werte für die relative Text­aus­rich­tung Be­schrei­bung
start Text wird zu der Seite hin aus­ge­rich­tet, an der er beginnt. Bei einer Lauf­rich­tung von links nach rechts { direction: ltr; } ent­spricht der Wert dem Wert left. Bei einer Lauf­rich­tung von rechts nach links { direction: rtl; } ent­spricht der Wert dem Wert right.
end Text wird zur der Seite aus­ge­rich­tet, an der der Text endet.

Der Wert start gilt als Stan­dard­wert.

Alle gängigen Browser stellen die letzte Zeile im Blocksatz au­to­ma­tisch links­bün­dig dar. Ist dies nicht erwünscht, kann diese mit der CSS-Property text-align-last separat for­ma­tiert werden. Die möglichen Werte ent­spre­chen denen der *text-align-*Property.

hyphens

Darüber hinaus bietet CSS mit der Property hyphens die Mög­lich­keit, eine au­to­ma­ti­sche Sil­ben­tren­nung ein­zu­rich­ten. Die Style­sheet-Sprache stellt folgende Werte für die hyphens-Property zur Verfügung:

Werte für hyphens-Property Be­schrei­bung
manual Manuelle Sil­ben­tren­nung: Weiche Trenn­stri­che werden bei der Sil­ben­tren­nung be­rück­sich­tigt (Stan­dard­wert).
none Keine Sil­ben­tren­nung: Weiche Trenn­stri­che werden bei der Sil­ben­tren­nung nicht be­rück­sich­tigt. Der Zei­len­um­bruch erfolgt aus­schließ­lich an Leer­zei­chen.
auto Au­to­ma­ti­sche Sil­ben­tren­nung: Die Wort­tren­nung erfolgt nach den Regeln der über das HTML-Attribut lang de­fi­nier­ten Sprache.
inherit Die Ein­stel­lun­gen ent­spre­chen denen des El­tern­ele­ments.

word-spacing

Die CSS-Property word-spacing regelt den Wort­ab­stand innerhalb eines Text­ele­ments. Web­sei­ten­be­trei­ben­de haben die Mög­lich­keit, die Abstände zwischen Wörtern durch Grö­ßen­an­ga­ben zu de­fi­nie­ren. Dazu stehen die unter font-size dar­ge­stell­ten Maß­ein­hei­ten zur Verfügung – mit Ausnahme der Pro­zent­an­ga­be. Weitere mögliche Werte für die word-spacing-Property sind normal (Stan­dard­ein­stel­lung) und inherit (dem El­tern­ele­ment ent­spre­chend).

Das nach­fol­gen­de Code­bei­spiel definiert einen Wort­ab­stand von 2em. Dieser kommt zum Default-Wort­ab­stand hinzu.

.content {
word-spacing: 2em;
}
css

letter-spacing

Soll nicht der Abstand der Worte zu­ein­an­der, sondern der Buch­sta­ben­ab­stand definiert werden, kommt die CSS-Property letter-spacing zum Einsatz. Auch hier stehen Grö­ßen­an­ga­ben mit Ausnahme der Pro­zent­an­ga­be sowie die Werte normal und inherit zur Auswahl.

Folgendes Code­bei­spiel zeigt einen Text­ab­schnitt, in dem ein Wort durch einen zu­sätz­li­chen Buch­sta­ben­ab­stand von 1em her­vor­ge­ho­ben wird.

.special-content {
letter-spacing: 1em;
}
css

text-indent

Mit der CSS-Property text-indent haben Sie die Mög­lich­keit, Ein­rü­ckun­gen zu de­fi­nie­ren, die sich lediglich auf die erste Zeile eines Absatzes beziehen. Mögliche Werte sind positive und negative sowie pro­zen­tua­le Angaben in Relation zur Breite des je­wei­li­gen Text­blocks.

Folgendes Code­bei­spiel definiert eine Ein­rü­ckung der ersten Zeile um 5 Prozent. Die Klasse wird im HTML-Quelltext durch span-Elemente vergeben:

.content {
text-indent: 5%;
}
css

Um hängende Absätze zu de­fi­nie­ren, wird die Property text-indent mit einem negativen Wert versehen.

text-decoration

Die CSS-Property text-decoration bietet Ihnen die Mög­lich­keit, Text­ele­men­te mit De­ko­ra­tio­nen wie Un­ter­strei­chun­gen zu versehen. Mögliche Werte sind:

Werte für text-decoration-Property Be­schrei­bung
none Keine Text­de­ko­ra­ti­on
underline Jede Zeile des aus­ge­zeich­ne­ten Text­ab­schnitts wird un­ter­stri­chen.
overline Über jeder Zeile des aus­ge­zeich­ne­ten Text­ab­schnitts wird eine Linie dar­ge­stellt.
line-through Jede Zeile des aus­ge­zeich­ne­ten Text­ab­schnitts wird durch­ge­stri­chen.
inherit Die Text­de­ko­ra­ti­on ent­spricht dem El­tern­ele­ment.

Folgendes Code­bei­spiel definiert Un­ter­strei­chun­gen für aus­ge­wähl­te Wort­grup­pen innerhalb des Text­ab­schnitts:

.content-underline {
text-decoration: underline;
}
css

text-transform

Die Property text-transform er­mög­licht es, Text­trans­for­ma­tio­nen via CSS vor­zu­neh­men. So lassen sich Text­be­rei­che in Majuskeln (Groß­buch­sta­ben) oder Minuskeln (Klein­buch­sta­ben) dar­stel­len, ohne dass die Text­grund­la­ge angepasst werden muss. Die Property erlaubt folgende Trans­for­ma­tio­nen:

Werte für text-transform-Property Be­schrei­bung
capitalize Der erste Buchstabe eines jeden Wortes wird als Groß­buch­sta­be dar­ge­stellt.
uppercase Der gesamte Text­ab­schnitt wird in Groß­buch­sta­ben dar­ge­stellt.
lowercase Der gesamte Text­ab­schnitt wird in Klein­buch­sta­ben dar­ge­stellt.
none Es findet keine Trans­for­ma­ti­on statt.
inherit Die Trans­for­ma­ti­on ent­spricht der des El­tern­ele­ments.

Sollen die An­fangs­buch­sta­ben eines Ab­schnitts un­ab­hän­gig vom Ur­sprungs­text als Groß­buch­sta­ben dar­ge­stellt werden, bietet sich folgende For­ma­tie­rung an:

.content {
text-transform: capitalize;
}
css

Schrift- und Hin­ter­grund­far­ben

Bei der Wahl von Schrift- und Hin­ter­grund­far­ben greifen Web­de­si­gne­rin­nen und -designer in der Regel auf die bereits er­läu­ter­ten Farbcodes in dezimaler oder he­xa­de­zi­ma­ler Schreib­wei­se zurück. Eine Reihe von Pro­per­ties nutzen diese Farbcodes.

color

Die CSS-Property color dient der For­ma­tie­rung der Schrift­far­be. Gängige Werte sind Farb­an­ga­ben in Form von RGB-Werten, He­xa­de­zi­mal­codes oder HSL-Angaben. Darüber hinaus er­mög­licht es die Werte transparent und opacity, Elemente un­sicht­bar dar­zu­stel­len. Folgendes Code­bei­spiel zeigt die Farb­for­ma­tie­rung anhand eines he­xa­de­zi­ma­len Farbcodes:

.content {
font-family: Arial;
font-size: 5em;
color: #d82451;
}
css

background-color

Die CSS-Property background-color kommt zum Einsatz, wenn einem Element eine Hin­ter­grund­far­be zu­ge­wie­sen werden soll. Die möglichen Werte ent­spre­chen denen der color-Property.

Folgendes Code­bei­spiel zeigt eine For­ma­tie­rung von Schrift- und Hin­ter­grund­far­be:

.content {
font-family: Arial;
font-size: 5em;
color: #d82451;
background-color: #24d8ab;
}
css

Die For­ma­tie­rung weist den Web­brow­ser an, alle Text­ele­men­te der Klasse content bor­deaux­rot (#d82451) dar­zu­stel­len und tür­kis­grün (#24d8ab) zu hin­ter­le­gen.

background-image

Al­ter­na­tiv zu einer Hin­ter­grund­far­be kann eine Grafik als Hin­ter­grund für ein Element geladen werden. De­si­gne­rin­nen und Designer nutzen dazu die Property background-image, die als Wert den Pfad zur Grafik gemäß folgender Schreib­wei­se enthält:

.content {
background-image:
url (Pfad zur Bilddatei);
}
css

Statt background-image oder background-color können Sie auch die Kurz­schreib­wei­se background verwenden.

Zudem bietet CSS die Mög­lich­keit, Farb­ver­läu­fe als Hin­ter­grün­de zu de­fi­nie­ren:

CSS-Farb­ver­läu­fe Be­schrei­bung
linear-gradient() Die Funktion erzeugt einen linearen Farb­ver­lauf.
radial-gradient() Die Funktion erzeugt einen radialen Farb­ver­lauf.
repeating-linear-gradient() Die Funktion erzeugt einen sich wie­der­ho­len­den linearen Farb­ver­lauf.
repeating-radial-gradient() Die Funktion erzeugt einen sich wie­der­ho­len­den radialen Farb­ver­lauf.

In unserer CSS-Ein­füh­rung be­schrän­ken wir uns bei­spiel­haft auf die Funktion linear-gradient(). Soll ein Element mit einem linearen Farb­ver­lauf hin­ter­legt werden, nutzt man die Funktion linear-gradient() als Wert für die background-Property. Diese erwartet min­des­tens zwei Farb­an­ga­ben als Argumente. In welcher Schreib­wei­se die Farben definiert werden, ist nicht relevant.

.content {
width: 400px;
height: 400px;
background: linear-gradient( green, yellow );
}
css

Rahmen

CSS er­mög­licht es Ihnen auch, HTML-Elemente mit einem Rahmen zu versehen. Dies empfiehlt sich vor allem für so­ge­nann­te Block-Level-Elemente wie Über­schrif­ten, Absätze, div-Elemente oder HTML-Tabellen, die innerhalb des body-Elements auftreten. Ohne weitere For­ma­tie­rung er­stre­cken sich solche In­halts­blö­cke über die gesamte ver­füg­ba­re Breite und ordnen sich un­ter­ein­an­der an.

Zu un­ter­schei­den sind Block-Level-Elemente von so­ge­nann­ten Inline-Elementen wie <b>, <i>, <a> oder <span>. Inline-Elemente treten aus­schließ­lich innerhalb von Block-Level-Elementen auf. Die Breite eines Inline-Elements wird aus­schließ­lich durch dessen eigenen Inhalt bestimmt.

Soll ein Rahmen ein ganzes Block-Level- oder Inline-Element um­schlie­ßen, verwendet man die Property borders. Al­ter­na­tiv können Sie die Rah­men­ge­stal­tung für jede Seite eines Elements auch einzeln de­fi­nie­ren.

Pro­per­ties für Rahmen Be­schrei­bung
border Definiert die Rah­men­ei­gen­schaf­ten für alle Seiten des Elements.
border-top Definiert die Ei­gen­schaf­ten der oberen Rah­men­kan­te
border-right Definiert die Ei­gen­schaf­ten der rechten Rah­men­kan­te.
border-bottom Definiert die Ei­gen­schaf­ten der unteren Rah­men­kan­te.
border-left Definiert die Ei­gen­schaf­ten der linken Rah­men­kan­te.

Sowohl die border-Property als auch die Pro­per­ties für einzelne Rah­men­kan­ten lassen sich weiter spe­zi­fi­zie­ren. Ent­spre­chen­de Werte werden mit Leer­zei­chen getrennt nach folgendem Schema hinter der Property notiert:

.content {
border: style width color;
}
.content {
border: solid 4px #ff0000;
}
css

Zudem bietet die Property border-radius die Mög­lich­keit, die Rah­men­kan­ten ab­zu­run­den.

Rahmentyp

Mit der Wahl eines Rah­men­typs de­fi­nie­ren Sie einen Schmuck­rah­men für das be­tref­fen­de Block-Level- oder Inline-Element. Manche Rah­men­ty­pen kommen erst zur Geltungen, wenn eine an­ge­mes­se­ne Rah­men­brei­te gewählt wurde.

Mögliche Werte für den Rahmentyp Be­schrei­bung
none kein Rahmen
hidden Zeigt keinen Rahmen an und un­ter­drückt diesen auch bei be­nach­bar­ten Ta­bel­len­zel­len.
dotted Definiert einen ge­punk­te­ten Rahmen.
dashed Definiert einen ge­stri­chel­ten Rahmen.
solid Definiert einen durch­ge­zo­ge­nen Rahmen.
double Definiert einen doppelten Rahmen.
groove, ridge, inset, outset Mit diesen Werten lassen sich un­ter­schied­li­che 3D-Effekte rea­li­sie­ren.

Folgende Grafik stellt die CSS-Rah­men­ty­pen gegenüber:

Bild: Die CSS-Rahmentypen
Es gibt ver­schie­de­ne CSS-Rah­men­ty­pen mit un­ter­schied­li­cher Optik.

Die Angabe des Rah­men­typs ist ob­li­ga­to­risch. Ist kein Rahmentyp angegeben, wird der Rahmen vom Web­brow­ser selbst dann nicht dar­ge­stellt, wenn Werte für die Rah­men­brei­te oder die Rah­men­far­be vorliegen.

Rah­men­brei­te

Die Rah­men­brei­te definiert die Li­ni­en­stär­ke des Rahmens.

Mögliche Werte für die Rah­men­brei­te Be­schrei­bung
Län­gen­an­ga­be Die Grö­ßen­an­ga­be der Rah­men­brei­te erfolgt mithilfe der unter font-size be­schrie­be­nen Maß­ein­hei­ten. Die Rah­men­brei­te kann nicht in Pro­zent­wer­ten angegeben werden.
thin dünn
medium mit­tel­stark
thick dick

Rah­men­far­be

Die Farb­ein­stel­lun­gen für die Property border-color ent­spre­chen denen der Pro­per­ties color und background-color.

Mögliche Werte für die Rah­men­far­be Be­schrei­bung
Farb­an­ga­ben Farb­an­ga­ben für Rahmen können in Schlüs­sel­wör­tern, als HEX-Wert sowie als RGB- oder HSL-Angabe erfolgen.
transparent Definiert den Rahmen als un­sicht­bar.

Folgendes Code­bei­spiel kom­bi­niert die Property border mit For­ma­tie­run­gen der Schrift- und Hin­ter­grund­far­be. Der Regelsatz wird im CSS-Dokument für die Klasse rahmen definiert:

.rahmen {
font-family: Arial;
font-size: 5em;
color: #d82451;
background-color: #24d8ab;
border: 10px ridge #d82451;
}
css

border-radius

Die Property border-radius er­mög­licht es, die Ecken eines Rahmens kreis­för­mig oder el­lip­tisch ab­zu­run­den. Ein etwaiger Hin­ter­grund wird dabei entlang der de­fi­nier­ten Kurve ab­ge­schnit­ten – das funk­tio­niert auch, wenn das Element keinen Rahmen hat. Geschickt ein­ge­setzt lassen sich mit border-radius auch einfache geo­me­tri­sche Formen zeichnen.

Mögliche Werte für die border-Property sind bis zu vier Grö­ßen­an­ga­ben, die jeweils für eine Ecke des Rahmens stehen. Die Zuweisung kann wahlweise durch einen, zwei, drei oder vier Werte erfolgen.

Werte für die border-radius-Property Be­schrei­bung
Ein Wert Der Wert gilt für alle vier Ecken.
Zwei Werte Der erste Wert definiert die Ecken oben links und unten rechts. Der zweite Wert definiert die Ecken oben rechts und unten links.
Drei Werte Der erste Wert definiert die Ecke oben links. Der zweite Wert definiert die Ecken oben rechts und unten links. Der dritte Wert definiert die Ecke unten rechts.
Vier Werte Jede Ecke wird durch einen eigenen Wert definiert. Es gilt die Rei­hen­fol­ge des Uhr­zei­ger­sinns: oben links, oben rechts, unten rechts, unten links.

Die einzelnen Werte für den Rah­men­ra­di­us werden durch Leer­zei­chen getrennt hinter der border-radius-Property notiert. Somit ergibt sich für die De­kla­ra­ti­on folgendes Schema (die Zahlwerte sind Beispiele):

border-radius: 4em 2em 3em 1em;
css

Die Property border-radius kann im selben Regelsatz wie der border-Property oder in separaten Klassen definiert werden.

Folgender Regelsatz definiert einen Rahmen mit einem border-radius von 2 em:

.rahmen {
height: 100px;
width: 600px;
border: solid 10px #d82451;
border-radius: 2em;
}
css
Bild: Rahmen mit abgerundeten Ecken
Ein Wert von 2em führt zu gleich­mä­ßig ab­ge­run­de­ten Ecken.

Al­ter­na­tiv lassen sich un­ter­schied­li­che Werte für jede der vier Ecken de­fi­nie­ren:

.rahmen {
height: 100px;
width: 600px;
border: solid 10px #d82451;
border-radius: 2em 1em 3em 4em;
}
css
Bild: Rahmen mit abgerundeten Ecken: Für jede Ecke wurde ein anderer Wert definiert
Für jede Ecke kann ein anderer Wert bestimmt werden.

In beiden Fällen werden die Ecken des Rahmens kreis­för­mig ab­ge­run­det. Soll die Abrundung el­lip­tisch erfolgen, werden für jede Ecke zwei Werte benötig. Die De­kla­ra­ti­on eines el­lip­tisch ab­ge­run­de­ten Rahmens kann somit bis zu acht Werte umfassen:

border-radius: 1em 4em 1em 4em / 4em 1em 4em 1em;
css

Die Werte vor dem Slash (/) de­fi­nie­ren den Radius auf der ho­ri­zon­ta­len Halbachse der Ellipse, die Werte nach dem Slash den Radius auf der ver­ti­ka­len Halbachse.

.rahmen {
height: 100px;
width: 600px;
border: solid 10px #d82451;
border-radius: 1em 4em / 4em 1em;
}
css
Bild: Rahmen mit elliptisch abgerundeten Ecken
Die Ecken können auch el­lip­tisch ab­ge­run­det werden.

Ein etwaiger Hin­ter­grund wird au­to­ma­tisch entlang der Kurve zu­ge­schnit­ten.

.rahmen {
height: 100px;
width: 600px;
border: solid 10px #d82451;
border-radius: 2em;
background-color: #24d8ab;
}
css
Bild: Rahmen mit abgerundeten Ecken und passgenauem Hintergrund
Der Hin­ter­grund wird au­to­ma­tisch an den Rahmen angepasst.

Dies gilt sowohl für Hin­ter­grund­far­ben als auch für Hin­ter­grund­bil­der, nicht jedoch für Text­ele­men­te.

Bild: Textelemente passen sich abgerundeten Rahmenkanten nicht automatisch an
Text­ele­men­te müssen separat aus­ge­rich­tet werden.

Po­si­tio­nie­rung

Die CSS-Property position dient dazu, eine Box aus dem Ele­ment­fluss zu entfernen und an einer be­lie­bi­gen Stelle der Website zu plat­zie­ren. Andere Boxen – egal ob im Ele­ment­fluss ein­ge­bun­den oder ebenfalls po­si­tio­niert – haben keinen Einfluss auf die Position einer derart for­ma­tier­ten Box.

Die position-Property hat die ver­schie­de­ne Werte, die sich durch die Pro­per­ties left, right, top und bottom sowie deren Werte als Maß­an­ga­ben näher spe­zi­fi­zie­ren:

Werte der position-Property Be­schrei­bung
absolute Po­si­tio­niert die Box relativ zum nächsten Element mit einer position.
relative Po­si­tio­niert die Box relativ zu ihrer normalen Position.
fixed Po­si­tio­niert die Box relativ zum Brow­ser­fens­ter und bleibt beim Scrollen fixiert.
static Na­tür­li­che Position der Box im Textfluss. Wurde die position: static gewählt, sind die Po­si­ti­ons­an­ga­ben unwirksam. Der Wert static ist der Stan­dard­wert von position.
sticky Po­si­tio­niert die Box wie ein Element mit position: relative, solange es sich innerhalb des Viewports befindet. Droht es jedoch, aus dem An­zei­ge­be­reich zu ver­schwin­den, löst es sich aus dem Ele­ment­fluss und bleibt beim Scrollen „kleben“. Der Wert sticky kann als eine Kom­bi­na­ti­on aus relative und fixed be­trach­tet werden.

Absolute Po­si­tio­nie­rung

Mit position: absolute wird die Box vom Ele­ment­fluss losgelöst und an der Stelle po­si­tio­niert, die durch die nach­fol­gen­den Pro­per­ties definiert wird. Die Angaben stehen dabei in Relation zum nächst­hö­he­ren Vor­fah­ren­ele­ment, das ebenfalls durch die position-Property spe­zi­fi­ziert wurde. Existiert ein solches Element nicht, wird das Wur­zel­ele­ment <html> als Be­zugs­punkt genommen. Boxen mit der De­kla­ra­ti­on position: absolute haben keinen Einfluss auf die Position anderer Elemente und über­la­gern diese bzw. werden von diesen über­la­gert.

Folgende Re­gel­sät­ze enthalten absolute Po­si­tio­nie­rungs­an­ga­ben der CSS-Boxen .rot, .blau und .grün innerhalb des El­tern­ele­ments .background.

.background {
height: 500px;
width: 500px;
border: solid grey
}
.rot {
height: 150px;
width: 150px;
background-color: rgba(255,0,0,0.5);
position: absolute;
top: 100px;
left: 100px;
}
.blau {
height: 150px;
width: 150px;
background-color: rgba(0,0,255,0.5);
position: absolute;
top: 150px;
left: 150px;
}
.grün {
height: 150px;
width: 150px;
background-color: rgba(0,255,0,0.5);
position: absolute;
top: 200px;
left: 200px;
}
css

Die Content-Boxen .rot, .blau und .grün wurden als halb­trans­pa­ren­te Flächen mit den Maßen 150 px x 150 px for­ma­tiert. Die Content-Box .background mit den Maßen 500 px x 500 px ist von einem grauen Rahmen umgeben.

Die Ge­stal­tungs­an­wei­sun­gen werden über Klassen in den HTML-Code ein­ge­bun­den.

<div class="background">
<p class="rot"> </p>
<p class="blau"> </p>
<p class="grün"> </p>
</div>
html

Die Brow­ser­an­sicht zeigt die un­ter­schied­li­che Po­si­tio­nie­rung der Boxen innerhalb des <div>-Elements. Die Elemente sind jeweils um 50 px nach rechts unten versetzt. Die trans­pa­ren­te Farb­ge­bung ver­deut­licht die Mög­lich­keit einer Über­lap­pung bei der absoluten Po­si­tio­nie­rung.

Bild: Absolute Positionierung von CSS-Boxen
Drei trans­pa­ren­te CSS-Boxen mit un­ter­schied­li­cher absoluter Po­si­tio­nie­rung.

Relative Po­si­tio­nie­rung

Bei der relativen Po­si­tio­nie­rung bliebt die Box im na­tür­li­chen Ele­ment­fluss ein­ge­bun­den, kann jedoch durch Po­si­tio­nie­rungs­an­ga­ben relativ zu diesem ver­scho­ben werden. Die jeweilige Box wird somit an sich selbst aus­ge­rich­tet. Vor­her­ge­hen­de und nach­fol­gen­de Elemente im Fluss verhalten sich so, als wäre die Box nicht ver­scho­ben worden.

Um eine Box ausgehend von ihrer Position in Ele­ment­fluss aus­zu­rich­ten, wird der ein­spre­chen­de Regelsatz um die De­kla­ra­ti­on position: relative sowie um ge­wünsch­te Po­si­ti­ons­an­ga­ben erweitert.

Folgender Codeblock de­mons­triert dies am Beispiel der blauen Box:

.blau {
height: 150px;
width: 150px;
background-color: rgba(0,0,255,0.5);
position: relative;
left: 50px;
}
css

Die Ge­stal­tungs­an­wei­sung position: relative mit der Po­si­ti­ons­an­ga­be left: 50px führt in der Brow­ser­an­sicht zu einer Ver­rü­ckung der blauen Box um 50 px nach links.

Bild: Relative Positionierung ausgehend vom natürlichen Elementfluss
Durch die relative Po­si­tio­nie­rung wird die blaue Box ver­scho­ben.

Die relative Po­si­tio­nie­rung lässt sich ebenso auf ge­floa­te­te Elemente anwenden.

Fixierte CSS-Boxen

Die Aus­rich­tung fixierter Boxen erfolgt wie bei der absoluten Po­si­tio­nie­rung abs­tra­hiert vom Ele­ment­fluss. Alle Po­si­tio­nie­rungs­an­ga­ben werden in Relation zum Viewport definiert. Eine auf diese Weise fixierte Box erscheint immer an derselben Stelle auf dem Bild­schirm – auch wenn ein User durch die Webseite scrollt. So lassen sich Na­vi­ga­ti­ons­ele­men­te wie Menüs oder Stopper-Buttons (z. B. „Zurück zum Sei­ten­an­fang“) im Sicht­be­reich anheften.

Das CSS-Box-Modell

Das CSS-Box-Modell be­schreibt, wie Browser HTML-Elemente als recht­ecki­ge Flächen („Boxen“) dar­stel­len und po­si­tio­nie­ren. Jede Website besteht im Kern aus einem Zu­sam­men­spiel solcher Boxen, deren Anordnung durch den so­ge­nann­ten Ele­ment­fluss bestimmt wird: Stan­dard­mä­ßig werden Elemente von links nach rechts und von oben nach unten platziert.

CSS un­ter­schie­det dabei zwischen zwei Arten von Boxen:

  • Block-Boxen (div, p) nehmen stan­dard­mä­ßig die gesamte Breite ihres El­tern­ele­ments ein und beginnen stets in einer neuen Zeile.
  • Inline-Boxen (span, b, i) werden im Textfluss dar­ge­stellt und passen sich dem Inhalt an.

Ver­deut­li­chen lässt sich der Ele­ment­fluss von Block- und Inline-Boxen an den folgenden Grafiken:

Bild: Drei Block-Boxen im CSS-Elementfluss
CSS-Ele­ment­fluss: Block-Boxen werden jeweils in einer neuen Reihe dar­ge­stellt.

Block-Boxen struk­tu­rie­ren das Layout, während Inline-Boxen für Text- und Inline-Elemente zuständig sind. Leere Container wie <div> dienen oft nur der Grup­pie­rung und For­ma­tie­rung per CSS.

Ebenen des Box-Modells Be­schrei­bung
In­halts­be­reich (Content-Box) Fläche, deren Aus­deh­nung durch den Text­um­fang oder die Maße einer Grafik bestimmt wird. Bei Block-Level-Elementen lassen sich Höhe und Breite durch die Pro­per­ties height und width de­fi­nie­ren. Bei Inline-Elemente steht diese Art der For­ma­tie­rung nicht zur Verfügung.
In­nen­ab­stand (Padding-Box) Die Padding-Box (engl. padding = „Pols­te­rung“) definiert den Abstand zwischen Content-Box und Border-Box.
Rahmen (Border-Box) Die Border-Box definiert den Rahmen.
Au­ßen­ab­stand (Margin-Box) Die Margin-Box definiert den Abstand zwischen dem aktuellen Element und seinem El­tern­ele­ment oder be­nach­bar­ten Elementen. Die margin-Property darf auch negative Werte aufweisen.

Sollen alle vier Kanten einer Box zugleich for­ma­tiert werden, kommen die Pro­per­ties padding, border und margin zum Einsatz:

In­nen­ab­stand Rahmen Au­ßen­ab­stand
oben padding-top border-top margin-top
unten padding-bottom border-bottom margin-bottom
links padding-left border-left margin-left
rechts padding-right border-right margin-right

Mögliche Werte für die auf­ge­führ­ten Pro­per­ties sind Grö­ßen­an­ga­ben sowie inherit (dem El­tern­ele­ment ent­spre­chend). Au­ßen­ab­stän­de lassen sich zudem durch den Wert auto de­fi­nie­ren.

Folgende Grafik zeigt den sche­ma­ti­schen Aufbau einer CSS-Box:

Bild: CSS-Box-Modell
Sche­ma­ti­sche Dar­stel­lung des CSS-Box-Modells.

Das CSS-Box-Modell im Einsatz

Ver­deut­li­chen lässt sich das CSS-Box-Modell, indem man einer Content-Box die einzelnen Ebenen Schritt für Schritt hinzufügt. Aus­gangs­punkt ist ein kurzer Text­ab­schnitt, der in diesem Beispiel durch den Klas­sen­se­lek­tor for­ma­tiert werden soll:

<p class="content">At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctusest Lorem ipsum dolor sit amet.</p>
html

Folgender Regelsatz gibt für die Content-Box die Maße 150 px x 150 px vor. Weitere For­ma­tie­run­gen de­fi­nie­ren schwarze Schrift auf grauem Hin­ter­grund. Zudem soll der Text im Blocksatz aus­ge­rich­tet werden:

.content {
height: 150px;
width: 150px;
color: #000000;
text-align: justify;
background-color: #808080;
}
css

An­ge­wen­det auf den Text­ab­schnitt führen diese Ge­stal­tungs­an­wei­sun­gen zu folgender Dar­stel­lung im Web­brow­ser:

Bild: Content-Box ohne padding, border und margin
Wird eine Content-Box ohne padding, border und margin definiert, erscheint Sie oben links im Brow­ser­fens­ter

Der Text­ab­schnitt erscheint gemäß dem Ele­ment­fluss in der oberen linken Ecke seines El­tern­ele­ments. Der Text und die Hin­ter­grund­far­be beginnen ohne Abstand an der linken Seite des Brow­ser­fens­ters und füllen die gesamte zur Verfügung stehende Fläche aus. Der Hin­ter­grund schließt direkt mit dem Text­kör­per ab.

Ein solches Design sieht unschön aus und erschwert das Lesen. Die Property padding er­mög­licht es Web­de­si­gne­rin­nen und -designern daher, einen In­nen­ab­stand zu de­fi­nie­ren, um Text­ele­men­te von um­lie­gen­den Ge­stal­tungs­ele­men­ten ab­zu­set­zen.

.content {
height: 150px;
width: 150px;
color: #000000;
background-color: #808080;
text-align: justify;
padding: 10px;
}
css

Zum Regelsatz hin­zu­ge­fügt bewirkt die De­kla­ra­ti­on padding: 10px; folgende Ver­än­de­rung in der Frontend-Ansicht:

Bild: Content-Box mit padding
Das Padding definiert den In­nen­ab­stand.

Der Web­brow­ser fügt an allen vier Seiten der Content-Box einen In­nen­ab­stand von 10 px hinzu. Als weiteres De­sign­ele­ment bietet sich ein Rahmen an.

.content {
height: 150px;
width: 150px;
color: #000000;
background-color: #808080;
text-align: justify;
padding: 10px;
border: 5px solid #d82451;
}
css

Im Beispiel-Code wird die border-Property genutzt, um dem Element einen bor­deaux­ro­ten, durch­ge­hen­den Rahmen hin­zu­zu­fü­gen.

Bild: Content-Box mit padding und border
Der Rahmen um­schließt Content- und Pad­ding­box.

Ein Rahmen wird somit durch den Padding-Wert vom Inhalt abgesetzt.

Gemäß dem na­tür­li­chen Ele­ment­fluss fügt sich die auf diese Weise for­ma­tier­te Box ohne Abstand an die linke obere Ecke des El­tern­ele­ments an. Die Property margin er­mög­licht es, das Design einer Webseite durch einen Au­ßen­ab­stand auf­zu­lo­ckern. Dazu wird die ent­spre­chen­de De­kla­ra­ti­on einfach zum be­stehen­den Regelsatz hin­zu­ge­fügt:

.content {
height: 150px;
width: 150px;
color: #000000;
background-color: #808080;
text-align: justify;
padding: 10px;
border: 5px solid #d82451;
margin: 40px;
}
css

Im Web­brow­ser wird ein solcher Au­ßen­ab­stand von 40 px fol­gen­der­ma­ßen umgesetzt:

Bild: Content-Box mit padding, border und margin
Die Property margin erzwingt einen Au­ßen­ab­stand zwischen Border-Box und El­tern­ele­ment.

Al­ter­na­tiv zur Maßangabe kann die margin-Property mit dem Wert auto versehen werden. In diesem Fall richtet sich die Box au­to­ma­tisch ho­ri­zon­tal zentriert innerhalb des El­tern­ele­ments aus. In ver­ti­ka­ler Richtung wirkt sich auto nicht aus.

Hinweis

Der Platz­be­darf einer CSS-Box lässt sich ermitteln, indem die Werte aller re­le­van­ten Be­stand­tei­le einer Box addiert werden.

Box-For­ma­tie­rung mit float

Handelt es sich bei der zu for­ma­tie­ren­den Box um eine Block-Box, rücken nach­fol­gen­de Boxen gemäß des Ele­ment­flus­ses au­to­ma­tisch in die nächste Zeile.

Der au­to­ma­ti­sche Zei­len­um­bruch nach einer Block-Box ist in der Praxis nicht immer erwünscht und kann mithilfe der Property float un­ter­bun­den werden. Diese löst Block-Boxen aus dem normalen Ele­ment­fluss heraus und setzt sie an eine ge­wünsch­te Stelle.

Werte für die float-Property Be­schrei­bung
none Es findet keine Ver­schie­bung des Elements statt. Der Wert float: none; ist der Stan­dard­wert einer CSS-Box.
left Die Block-Box wird an die linke In­nen­kan­te des El­tern­ele­ments ver­scho­ben.
right Die Block-Box wird an die rechte In­nen­kan­te des El­tern­ele­ments ver­scho­ben
inherit Der float-Wert ent­spricht dem des El­tern­ele­ments.

Eine Box mit float-For­ma­tie­rung wird Float genannt.

Treffen mehrere Floats auf­ein­an­der, werden diese in der Rei­hen­fol­ge, in der sie im HTML-Quellcode stehen, von links nach rechts (float: left) bzw. von rechts nach links (float: right) an­ge­ord­net.

Folgendes Code­bei­spiel zeigt einen Regelsatz inklusive float-Property:

.content {
height: 150px;
width: 150px;
color: #000000;
background-color: #808080;
text-align: justify;
padding: 20px;
border: 5px solid #d82451;
margin: 40px;
float: left;
}
html

Wird dieser auf zwei HTML-Elemente an­ge­wen­det, werden sie aus dem Ele­ment­fluss her­aus­ge­ho­ben und links­bün­dig an­ein­an­der­ge­reiht:

<p class="content">At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctusest Lorem ipsum dolor sit amet.</p>
<p class="content">Nam quam nunc, blandit vel, luctus pulvinar, hendrerit id, lorem. Maecenas nec odio et ante tincidunt tempus.</p>
html
Bild: Zwei Block-Boxen als linksausgerichtete Floads
Mit der Property `float` lassen sich Block-Boxen ohne Zei­len­um­bruch ne­ben­ein­an­der dar­stel­len.

Der große Zwi­schen­raum ergibt sich dadurch, dass der Au­ßen­ab­stand beider Boxen addiert wird. Ohne Float würden die Au­ßen­ab­stän­de an­gren­zen­der Elemente zu­sam­men­fal­len.

Re­spon­si­ves Webdesign mit CSS

Um re­spon­si­ves Webdesign mit CSS zu gestalten, bietet die Style­sheet-Sprache zwei moderne Layout-Techniken: Flexbox und Grid. Beide Systeme passen Inhalte dynamisch an un­ter­schied­li­che Bild­schirm­grö­ßen an. In Kom­bi­na­ti­on mit CSS Media Queries lassen sich Layouts zu­sätz­lich gezielt an ver­schie­de­ne Geräte und Bild­schirm­brei­ten anpassen.

Flexbox

Mit CSS Flexbox (Flexible Box Layout) lassen sich ein­di­men­sio­na­le Layouts besonders einfach gestalten. Dabei richtet Flexbox Inhalte entweder ho­ri­zon­tal oder vertikal aus und ist somit ideal für Na­vi­ga­tio­nen, Galerien oder modulare In­halts­be­rei­che geeignet.

Ein so­ge­nann­ter Flex-Container wird durch die Property display: flex; definiert. Alle direkten Kind­ele­men­te werden au­to­ma­tisch zu Flex-Items, deren Po­si­tio­nie­rung, Rei­hen­fol­ge und Größe sich flexibel steuern lässt.

Property Be­schrei­bung
flex-direction Bestimmt die Haupt­rich­tung der Flex-Items. Der Wert row wird für ho­ri­zon­ta­le, der Wert column für vertikale Aus­e­rich­tung genutzt.row-reverse und column-reverse richten jeweils von rechts nach links aus.
justify-content Richtet die Flex-Items entlang der Haupt­ach­se aus. Mit flex-start erfolgt die Aus­rich­tung am Anfang, mit flex-end am Ende der Achse und mit center zentriert. Mit space-between, space-around und space-evenly wird der Abstand der Elemente angegeben (gleich­mä­ßig ohne Abstand am Rand, gleicher Abstand um alle Elemente, gleich­mä­ßi­ger zwischen allen Items)
align-items Richtet die Flex-Items entlang der Querachse aus, die Werte flex-start,flex-end und center funk­tio­nie­ren wie bei flex-direction. Zu­sätz­lich kann mit baseline eine Aus­rich­tung an der Ba­sis­li­nie und mit stretch eine con­tai­ner­fül­len­de Aus­rich­tung erreicht werden.
flex-wrap Legt fest, ob die Flex-Items in eine neue Zeile umbrechen dürfen. Mit nowrap (Standard) bleiben alle Elemente in einer Zeile. Mit wrap und wrap-reverse finden Zei­len­um­brü­che (ggf. In um­ge­kehr­ter Richtung) statt.
gap Bestimmt den Abstand zwischen den Flex-Items.

Ein einfaches Beispiel zeigt die ho­ri­zon­ta­le Anordnung von Elementen mit gleich­mä­ßi­gem Abstand:

.container {
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
gap: 10px;
css

Die Regeln werden auf folgendes HTML an­ge­wen­det:

<div class="container">
<div class="item">Item 1</div>
<div class="item">Item 2</div>
<div class="item">Item 3</div>
</div>
html

Darüber hinaus lässt sich auch das Verhalten einzelner Flex-Items in­di­vi­du­ell steuern. Mit der Property flex können Sie etwa festlegen, wie stark sich ein Element im Ver­hält­nis zu anderen ver­grö­ßern oder ver­klei­nern darf. Dabei steht der Wert 2 für eine Ver­dopp­lung:

.item1 {flex: 2; }
css

Grid-Layout

Mit einem CSS Grid können Web­sei­ten­in­hal­te in einem zwei­di­men­sio­na­len Raster an­ge­ord­net werden. Das Grid-System er­mög­licht eine präzise Steuerung von Zeilen und Spalten, wodurch komplexe Layouts einfach und flexibel umgesetzt werden können. Um ein Grid zu erstellen, weist man einem El­tern­ele­ment die Property display: grid; zu. Alle direkten Kind­ele­men­te dieses Con­tai­ners werden au­to­ma­tisch zu Grid-Items. An­schlie­ßend lässt sich das Raster mit einer Vielzahl an Pro­per­ties anpassen.

Property Be­schrei­bung
grid-template-columns Definiert die Spal­ten­struk­tur des Grids. Die wich­tigs­te Einheit ist fr; sie gibt an, wie viele Anteile des ver­füg­ba­ren Platzes genutzt werden. Mit auto erfolgt die Ein­tei­lung au­to­ma­tisch.
grid-template-rows Definiert die Zei­len­struk­tur des Grids. Die Werte für grid-template-rows sind dieselben wie für grid-template-columns.
gap Bestimmt den Abstand zwischen den Grid-Items
justify-items Legt die ho­ri­zon­ta­le Aus­rich­tung der Grid-Items fest. . start sorgt für eine Aus­rich­tung links, end für eine Aus­rich­tung rechts und center für eine zen­trier­te Aus­rich­tung. Der Stan­dard­wert stretch füllt die Zelle aus.
align-items Legt die vertikale Aus­rich­tung der Grid-Items fest. Die Aus­rich­tung erfolgt mit denselben Werten wie justify-items.

Ein Beispiel zeigt den Aufbau eines Grids mit drei gleich breiten Spalten und zwei Zeilen mithilfe von ein­heit­li­chen fr-Werten:

.container {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
grid-template-rows: auto auto;
gap: 10px;
}
css

Jedes Grid-Item kann außerdem gezielt po­si­tio­niert werden, um sich bei­spiels­wei­se über mehrere Spalten oder Zeilen zu er­stre­cken. Dafür stehen die Pro­per­ties grid-column und grid-row zur Verfügung. Hierzu werden die Start- (inklusiv) und die Endzeile (exklusiv) getrennt von einem Slash (/) angegeben. In folgendem beispiel erstreckt sich das Element über zwei Spalten und eine Zeile.

.item1 {
grid-column: 1 / 3; 
grid-row: 1; 
}
css

Media Queries

Media Queries er­mög­li­chen es, CSS-Regeln abhängig von Ge­rä­te­ei­gen­schaf­ten an­zu­wen­den. So kann das Layout auf Smart­phones, Tablets und Desktop-Bild­schir­men un­ter­schied­lich aussehen, ohne mehrere HTML-Dateien zu benötigen. Mit einer Media Query lassen sich gezielt Styles ak­ti­vie­ren oder über­schrei­ben, sobald bestimmte Be­din­gun­gen erfüllt sind. Die häufigste Anwendung ist die Anpassung an ver­schie­de­ne Viewport-Breiten, für die folgende Werte benötigt werden:

Property/Syntax Be­schrei­bung
@media Leitet eine Media Query ein.
screen, print, all Bestimmt, für welche Medienart die Regeln gelten.
min-width Aktiviert CSS-Regeln ab einer be­stimm­ten Min­dest­brei­te.
max-width Aktiviert CSS-Regeln bis zu einer be­stimm­ten Ma­xi­mal­brei­te.

Ein Beispiel zeigt, wie eine Media Query genutzt werden kann, das Layout unterhalb einer be­stimm­ten Breite zu verändern:

/ *Standard-Layout für größere Bildschirme* /
.container {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
}
/ *Anpassung für kleinere Bildschirme* /
@media (max-width: 768px) {
.container {
grid-template-columns: 1fr;
}
}
css

Mehrere Be­din­gun­gen lassen sich auch kom­bi­nie­ren, bei­spiels­wei­se, um Layouts nur auf Tablets im Hoch­for­mat zu verändern:

@media screen and (min-width: 600px) and (max-width: 900px) and (orientation: portrait) {
body {
font-size: 1.1em;
}
}
css

CSS-Variablen

CSS-Variablen (auch Custom Pro­per­ties genannt) er­mög­li­chen es, Werte zentral zu speichern und mehrfach im Style­sheet zu verwenden. So lassen sich Farben, Abstände oder Schrift­grö­ßen an einer Stelle ändern, ohne das gesamte CSS anpassen zu müssen. Das macht den Code über­sicht­li­cher, war­tungs­freund­li­cher und kon­sis­ten­ter.

CSS-Variablen werden mit einem doppelten Bin­de­strich (--) definiert und mit der Funktion var() auf­ge­ru­fen.

Syntax Be­schrei­bung
--variablenname Definiert eine eigene Variable.
var(--variablenname) Ruft den Wert einer de­fi­nier­ten Variable auf.
:root Der globale Gül­tig­keits­be­reich (ent­spricht dem obersten HTML-Element).

Ein Beispiel zeigt, wie Variablen definiert und genutzt werden:

:root {
--main-color: #ff4081;
--text-color: #333;
--padding: 10px;
}
button {
background-color: var(--main-color);
color: var(--text-color);
padding: var(--padding);
}
css

Hier werden die Variablen --main-color, --text-color und --padding im :root definiert, also global für die ganze Seite. Der Button nutzt diese Variablen mit var(), sodass Hin­ter­grund­far­be, Textfarbe und Abstand au­to­ma­tisch von den Werten der Variablen über­nom­men werden.

Deploy Now
Deployen Sie Websites und Apps direkt via GitHub
  • Für statische Websites und Single-Page-Ap­pli­ka­tio­nen
  • Einfaches Staging mit Vorschau-URL
  • Au­to­ma­ti­sche Framework-Erkennung
Zum Hauptmenü