Um HTML an­spre­chend zu for­ma­tie­ren, kommt die Style­sheet-Sprache CSS zum Einsatz. So werden Attribute wie Layout, Farbe und Form der einzelnen HTML-Elemente fest­ge­legt. Dabei exis­tie­ren die CSS-Ge­stal­tungs­an­wei­sun­gen un­ab­hän­gig von HTML und müssen erst in das elek­tro­ni­sche Dokument ein­ge­bun­den werden.

Web­hos­ting
Das beste Web­hos­ting zum Spit­zen­preis
  • 3x schneller und 60 % günstiger
  • Maximale Ver­füg­bar­keit mit > 99.99 %
  • Nur bei IONOS: Bis zu 500 GB Spei­cher­platz inklusive

CSS einbinden: Welche Methoden gibt es?

Wenn Sie CSS in HTML einbinden, ist dies durch interne oder externe Style­sheets möglich. Bei internen Style­sheets befinden sich die CSS-An­wei­sun­gen direkt im HTML-Dokument. Hier besteht die Mög­lich­keit, CSS am Anfang der HTML-Datei zu in­te­grie­ren oder direkt und fort­lau­fend im Quellcode un­ter­zu­brin­gen. Bei dieser Methode ist ein gutes Grund­ver­ständ­nis von HTML und dessen Syntax von Vorteil.

Die gängigste und sauberste Methode bei der Ent­wick­lung von Websites ist al­ler­dings die Ver­wen­dung von externen CSS-Style­sheets. Dabei erfolgt die CSS-Ein­bin­dung durch eine Ver­lin­kung des HTML-Dokuments mit einer externen CSS-Datei. Im Folgenden stellen wir die drei Methoden im Überblick dar:

  • Inline-Style, d. h. direkt im Quellcode
  • am Anfang des HTML-Dokuments
  • aus­ge­la­gert in einer externen CSS-Datei
Profi-Website in Sekunden dank KI.
  • Profi-Website in Sekunden dank KI
  • Aus tausenden Vorlagen auswählen
  • 30 Tage kostenlos testen

CSS einbinden: Inline-Style

Bei dieser Methode wird die Ge­stal­tungs­an­wei­sung mithilfe eines style-Tags direkt im Quellcode ein­ge­bun­den. Die ge­wünsch­ten Ei­gen­schaf­ten sind so nur einem HTML-Element zu­ge­wie­sen, sodass im Verlauf des HTML-Dokuments ab­wei­chen­de Designs möglich sind. Im Beispiel unten soll die Über­schrift h1 in der Farbe Blau und in Schrift­grö­ße 14 dar­ge­stellt werden:

<h1 style="color: blue; font-size: 14px;">Dies ist eine Überschrift</h1>
html

Bei dieser Art von Ein­bin­dung gilt es zu beachten, dass viele Vorteile, die CSS mit sich bringt, verloren gehen. Dazu gehört die Mög­lich­keit, einen über­grei­fen­den Befehl fest­zu­le­gen, der dann bei­spiels­wei­se für alle h1-Elemente im HTML-Dokument gilt. Unter Umständen entsteht auch ein größerer War­tungs­auf­wand, da direkt in den HTML-Code ein­ge­grif­fen wird.

Am Anfang von HTML CSS einbinden

Bei dieser Variante binden Sie CSS in den Kopf­be­reich Ihres HTML-Dokuments ein. Das style-Tag wird so zum Teil des head-Elements und gilt für die gesamte Datei. Hier sind die CSS-Ge­stal­tungs­an­wei­sun­gen zwar immer noch im Dokument selbst un­ter­ge­bracht, vom HTML-Code jedoch deutlich besser getrennt. Im Beispiel unten gilt derselbe Befehl wie im vor­he­ri­gen Beispiel. Diesmal sollen jedoch alle h1-Über­schrif­ten in der Datei nach den Angaben for­ma­tiert werden.

<!DOCTYPE html>
<html>
<head>
<style>
h1 {color: blue; font-size: 14px;}
</style>
</head>
<body>
<h1>Dies ist eine Überschrift</h1>
<p>Dies ist ein Absatz.</p>
</body>
</html>
html

CSS mit aus­ge­la­ger­ter Datei in­te­grie­ren

Dies ist wahr­schein­lich die beste Methode, mit der Sie CSS in HTML einbinden können. Eine Website besteht nämlich oft aus vielen Seiten, sodass es sinnvoll ist, Ge­stal­tungs­an­wei­sun­gen in einer separaten Datei zu speichern. Das er­mög­licht eine saubere Trennung zwischen Inhalt und Design und er­leich­tert die Wartung. Die aus­ge­la­ger­te Datei wird einfach mit dem HTML-Dokument verknüpft. Dabei speichern Sie das externe Style­sheet mit der Endung .css und verwenden dann ein link-Tag, um es in Ihre HTML-Datei ein­zu­bin­den. Im Beispiel trägt die CSS-Datei den Namen „style­sheet.css“.

<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="stylesheet.css">
</head>
<body>
<h1>Dies ist eine Überschrift</h1>
<p>Dies ist ein Absatz.</p>
</body>
</html>
html

Das Attribut rel definiert hier den logischen Be­zie­hungs­typ und href bezieht sich auf die ein­zu­bet­ten­de CSS-Datei. Beachten Sie, dass das link-Element auch andere Attribute haben kann. Mit der Ei­gen­schaft media="print" legen Sie bei­spiels­wei­se fest, dass das Style­sheet nur in der Druck­an­sicht zum Einsatz kommt. Das externe Style­sheet enthält keine HTML-Tags, sondern lediglich den je­wei­li­gen Selektor und ge­schweif­te Klammern mit den De­kla­ra­tio­nen wie im folgenden Beispiel:

h1 {
color: blue;
font-size:14px;
}
css

Die gän­gigs­ten neuen CSS-Features

Innerhalb dieser klas­si­schen Methoden zur Ein­bin­dung von CSS haben sich in den letzten Jahren zahl­rei­che neue Funk­tio­nen ent­wi­ckelt, die das Gestalten von Websites noch flexibler machen. Mit modernen Se­lek­to­ren wie :has() lassen sich Eltern-Elemente abhängig von ihren Kindern an­spre­chen, während Container-Abfragen dafür sorgen, dass sich einzelne Kom­po­nen­ten un­ab­hän­gig von der Fens­ter­brei­te an die Größe ihres je­wei­li­gen Con­tai­ners anpassen. Diese und weitere neue Features er­mög­li­chen es, mo­du­la­re­re, dy­na­mi­sche­re und be­nut­zer­freund­li­che­re Designs um­zu­set­zen, ohne dabei auf komplexe Work­arounds oder Ja­va­Script zu­rück­grei­fen zu müssen.

CSS-Pseu­do­klas­se :has()

Dabei handelt es sich um einen Parent Selector, der vor­ge­fer­tig­te Styles an bestimmte Be­din­gun­gen knüpfen kann. Bei­spiels­wei­se kann ein Feld so bei einem un­gül­ti­gen Input rot und bei einem gültigen Input grün gefärbt werden:

.form-group:has(input:invalid) {
    border: 2px solid red;
}
.form-group:has(input:valid) {
    border: 2px solid green;
}
css

Container-Abfragen

Container-Abfragen er­mög­li­chen es, CSS-Regeln nicht mehr nur an die Größe des gesamten Brow­ser­fens­ters (wie bei CSS Media Queries), sondern an die Größe des um­ge­ben­den Con­tai­ners zu knüpfen.

So kann sich jedes Modul oder jede Kom­po­nen­te in­di­vi­du­ell anpassen, je nachdem, wie viel Platz in seinem Parent-Element vorhanden ist. Damit wird modulares, wirklich flexibles re­spon­si­ves Webdesign möglich, das un­ab­hän­gig von der Fens­ter­brei­te ist. So kann bei­spiels­wei­se ein­ge­stellt werden, dass Karten mit Bild und Text in einer Reihe ne­ben­ein­an­der dar­ge­stellt werden, sobald ihr um­ge­ben­der Container breit genug ist.

Ist der Container schmaler als ein fest­ge­leg­ter Wert, in diesem Beispiel 400 Pixel, dann bleibt die Stan­dard­dar­stel­lung.

@container (min-width: 400px) {
    .card { flex-direction: row; }
}
css

CSS-Nesting

CSS-Nesting erlaubt es, Se­lek­to­ren direkt innerhalb anderer Se­lek­to­ren zu ver­schach­teln, ähnlich wie man es bisher aus SCSS oder LESS CSS kennt.

Dadurch bleibt der Code über­sicht­li­cher, weil zu­sam­men­ge­hö­ri­ge Styles an einer Stelle stehen, statt immer wieder lange Se­lek­tor­ket­ten zu wie­der­ho­len. In diesem Beispiel bekommen alle Buttons den gleichen Grundstil, und je nach zu­sätz­li­cher Klasse (primary oder secondary) bekommen sie einen un­ter­schied­li­chen Look:

button {
    padding: 0.5rem 1rem;
    border: none;
    &.primary {
        background: blue;
        color: white;
    }
    &.secondary {
        background: gray;
        color: black;
    }
}
css

Neue Farb-Funk­tio­nen

Mit den neuen CSS-Funk­tio­nen wie color-mix() oder light-dark() können Sie Farben direkt im Style­sheet dynamisch mischen oder je nach Hel­lig­keit au­to­ma­tisch Varianten wählen. Das macht es möglich, etwa Farb­über­gän­ge, Themes oder Dark-Mode-An­pas­sun­gen zu gestalten, ohne vorher feste Farbwerte berechnen zu müssen.

So wird CSS flexibler, weil Farben nicht mehr nur statisch fest­ge­legt, sondern kal­ku­liert und angepasst werden können. In diesem Beispiel wird die Hin­ter­grund­far­be aller Elemente mit der Klasse .btn durch die CSS-Funktion color-mix() auf ein 50:50-Ver­hält­nis zwischen Rot und Blau, also Violett, fest­ge­legt.

.btn {
    background: color-mix(in srgb, red 50%, blue);
}
css

Scroll Snap

Scroll Snap ist eine CSS-Funktion, mit der Sie festlegen können, dass sich Elemente beim Scrollen au­to­ma­tisch an be­stimm­ten Po­si­tio­nen „einrasten“. Damit lassen sich z. B. Bil­der­ga­le­rien, Ka­rus­sells oder Sei­ten­ab­schnit­te bauen, die beim Scrollen sauber auf einer de­fi­nier­ten Stelle stoppen.

Das sorgt für eine flüssige und be­nut­zer­freund­li­che Na­vi­ga­ti­on. Im folgenden Beispiel scrollt der über­ge­ord­ne­te Container .slider ho­ri­zon­tal (x) und sorgt dafür, dass das Einrasten ver­pflich­tend ist (mandatory). Jedes Kind­ele­ment .slide richtet sich beim Scrollen so aus, dass es am Anfang des Con­tai­ners (start) „einrastet“.

.slider {
    scroll-snap-type: x mandatory;
}
.slide {
    scroll-snap-align: start;
}
css
Zum Hauptmenü