Menu

Inline CSS: das style-Attribut und 3 Wege, CSS einzubinden

Inline CSS schreibt Deklarationen mit dem style-Attribut direkt an ein Element. Hier lernst du die Syntax, wann Inline-Styles die richtige Wahl sind, warum sie Stylesheets schlagen und wie sie sich von internem und externem CSS unterscheiden.

Diese Seite enthält ausführbare Editoren - bearbeiten, ausführen und Ausgabe sofort sehen.

Was Inline CSS ist

Inline CSS ist CSS, das du mit dem style-Attribut direkt an ein HTML-Element schreibst. Der Wert ist eine Liste von Deklarationen, property: value;, und sie gelten nur für dieses Element.

Es gibt keinen Selektor und keine geschweiften Klammern: Das Element, an dem das Attribut steht, ist das Ziel. Trenne Deklarationen mit Semikolons. Das letzte Semikolon ist optional, aber wenn du es stehen lässt, kannst du gefahrlos die nächste Deklaration anhängen.

Syntax

<element style="property: value; property: value;">
TeilBeispielHinweise
Attributstyle="..."Ein globales Attribut: an jedem HTML-Element erlaubt
Deklarationcolor: #2563eb;Dieselbe Syntax wie in einer Stylesheet-Regel
Mehrere Deklarationenpadding: 8px; border: 1px solid #e5e7eb;Getrennt durch ;
Anführungszeichen darinstyle="font-family: 'Courier New', monospace;"Innerhalb des doppelt gequoteten Attributs einfache Anführungszeichen nehmen

Alles, was keine Deklaration ist, ist nicht erlaubt. :hover, ::before, @media und Selektoren haben in einem style-Attribut nichts zu suchen.

Die 3 Wege, CSS in HTML einzubinden

CSS gelangt auf drei Wegen in eine Seite. Diese Seite behandelt den ersten; externes und internes CSS haben eine eigene Seite.

MethodeWo das CSS stehtGeltungsbereichTypischer Einsatz
Inlinestyle-Attribut an einem ElementDieses ElementEinzelne Werte, Werte aus JavaScript
Intern<style>-Element in der SeiteDiese SeiteDemos auf einer Seite, E-Mail-Templates, Critical CSS
ExternEine .css-Datei, eingebunden mit <link>Jede Seite, die sie einbindetStyling einer ganzen Website

Derselbe Absatz auf alle drei Arten gestylt (die externe Datei steht als Kommentar da, weil die Vorschau keine zweite Datei laden kann):

Der dritte Absatz behält Padding und Radius aus der .note-Regel und ersetzt nur den Hintergrund, weil der Inline-Style genau diese eine Eigenschaft setzt.

Warum Inline-Styles gewinnen

Wenn eine Stylesheet-Regel und ein Inline-Style dieselbe Eigenschaft setzen, gewinnt der Inline-Style. Wie spezifisch der Selektor ist, spielt keine Rolle: Auch ein ID-Selektor verliert.

Die einzige Ausnahme ist !important. Eine Stylesheet-Deklaration mit !important schlägt eine normale Inline-Deklaration, und ein inline gesetztes !important schlägt beide. Genau deshalb machen Inline-Styles eine Website schwer wartbar: Um sie aus einem Stylesheet zu ändern, brauchst du !important, und damit beginnt eine Eskalation. Die Seite zu !important zeigt die vollständige Reihenfolge.

Wann Inline CSS das richtige Werkzeug ist

Inline-Styles passen, wenn der Wert Daten sind und kein Design: Er ändert sich von Element zu Element und wird von einem Template oder von JavaScript geschrieben.

Das Aussehen (Farben, Höhe, Radius) steht im Stylesheet. Nur die Breite, die sich pro Balken unterscheidet, ist inline. JavaScript schreibt dasselbe Attribut über element.style:

Nach dem Klick lautet das HTML des Absatzes style="color: rgb(245, 158, 11); font-weight: bold;". Eigenschaftsnamen mit Bindestrich werden in JavaScript zu camelCase (font-weight wird fontWeight).

Eine CSS-Variable ist oft der sauberste Mittelweg: Setz nur die Variable inline, style="--progress: 35%", und lass das Stylesheet sie verwenden. Siehe CSS Variablen.

Wo Inline CSS an Grenzen stößt

  • Keine Zustände oder Pseudoelemente. :hover, :focus oder ::before kannst du nicht in ein style-Attribut schreiben.
  • Keine Media Queries. Eine Inline-Breite kann sich auf dem Handy nicht ändern.
  • Wiederholung. Zehn Buttons mit demselben Inline-Style bedeuten zehn Stellen zum Ändern.
  • Schwer zu überschreiben. Nur !important in einem Stylesheet schlägt ihn.
  • Content Security Policy. Eine strenge CSP ohne 'unsafe-inline' in style-src blockiert style-Attribute, die im HTML stehen.

Häufige Fehler

  • Einen Selektor oder Klammern in style schreiben. style="p { color: red }" wird ignoriert. Dort stehen nur Deklarationen.
  • = statt : verwenden. Es heißt color: red, nicht color=red.
  • Doppelte Anführungszeichen verschachteln. style="font-family: "Arial"" beendet das Attribut zu früh. Nimm innen einfache Anführungszeichen.
  • Einheiten vergessen. style="width: 200" wird ignoriert; schreib 200px. Nur eine Länge von 0 darf ihre Einheit weglassen.
  • Eine ganze Website inline stylen. Verschiebe wiederholte Styles in eine Klasse in einem Stylesheet und behalte Inline-Styles für Werte, die pro Element unterschiedlich sind.

Häufig gestellte Fragen

Was ist Inline CSS?

Inline CSS ist CSS, das im style-Attribut eines Elements steht, etwa <p style="color: red;">. Die Deklarationen gelten nur für dieses eine Element, ganz ohne Selektor.

Welche 3 Möglichkeiten gibt es, CSS in HTML einzubinden?

Inline mit dem style-Attribut an einem Element, intern mit einem <style>-Element in der Seite und extern mit einer eigenen .css-Datei, die du mit <link rel="stylesheet" href="styles.css"> im <head> einbindest. Für eine ganze Website nimmst du normalerweise externe Dateien.

Überschreibt Inline CSS externes CSS?

Ja, in den meisten Fällen. Eine Deklaration im style-Attribut schlägt jeden Selektor in einem Stylesheet, egal wie spezifisch er ist. Ein Stylesheet gewinnt nur mit !important, und ein inline gesetztes !important schlägt auch das.

Ist Inline CSS schlechter Stil?

Für das Styling einer ganzen Website ja: Es wiederholt sich, kann weder :hover noch Media Queries nutzen und ist schwer zu überschreiben. Für einzelne Werte, die JavaScript oder ein Template setzt, ist es in Ordnung, zum Beispiel die Breite eines Fortschrittsbalkens oder eine vom Nutzer gewählte Farbe.

Kann man hover in Inline CSS verwenden?

Nein. Das style-Attribut nimmt nur Deklarationen auf, also lassen sich Pseudoklassen wie :hover, Pseudoelemente wie ::before und @media-Regeln dort nicht schreiben. Setz sie in ein <style>-Element oder ein Stylesheet.

Coddy programming languages illustration

Lerne mit Coddy zu programmieren

LOS GEHT'S