Cascading Style Sheets (CSS) ist eine Stylesheet-Sprache für elektronische Dokumente
und zusammen mit HTML eine der Kernsprachen des World Wide Webs.
Sie wird vom World Wide Web Consortium (W3C) beständig weiterentwickelt.
Mit CSS werden Gestaltungsanweisungen erstellt, die vor allem zusammen mit der
Auszeichnungssprachen HTML eingesetzt werden.
In CSS sind Properties innerhalb von Regeln organisiert. Eine Regel
besteht aus einem Selektor, gefolgt von
einem Bereich welcher durch geschweifte Klammern begrenzt wird ("{" und "}"). Innerhalb der geschweiften
Klammern können beliebig viele (mindestens eine)
Property-Wert-Zuweisungen vorgenommen
werden. Jede Zuweisung muss durch einen Strichpunkt (";") beendet werden.
Dasselbe Property darf innerhalb einer Regel nur einmal verwendet werden.
In CSS können mehrzeilige C-Style Kommentare verwendet werden. Alles was zwischen den Zeichenkombinationen "/*"
und "*/" steht wird vom Browser ignoriert.
Es gibt drei Möglichkeiten Stylesheets in eine HTML-Seite einzubinden.
Über das Style-Attribut können Properties für jeden Tag einzeln gesetzt werden (inline). Der Style-Tag erlaubt es Properties über
Selektoren für die Gesamte Seite zu definieren. Außerdem kann durch den Link-Tag
eine externe CSS-Datei eingebunden werden.
Stellt eine Beziehung (Link) zu einer externen Datei her
href
Absolute oder Relative URL
URL
integrity
Checksumme für externe Ressourcen
HASH
media
Stylesheets auf ein bestimmtes Medium einschränken
all, screen, print, MEDIAQUERIES
rel
Art der Beziehung
stylesheet
type
Typ
text/css
<style></style>
Definiert Stylesheets für die gesamte Seite
media
Stylesheets auf ein bestimmtes Medium einschränken
all, screen, print, MEDIAQUERIES
type
Typ
text/css
Tags zur Einbindung von Stylesheets
Selektoren
Mit dem Selektor wird bestimmt bei welchen Elementen betimmte Properties gesetzt werden sollen.
Mehrere Selektoren können Gruppiert (,) bzw. miteinander verknüpft werden.
Selektor
Beschreibung
*
Universal-Selektor, alle Tags
ELEMENT
Typ-Selektor, alle Tags des gleichen Typs
.CLASS
Klassen-Selektor, alle Tags einer Klasse
#ID
ID-Selektor, Tag mit einer spezifischen eindeutigen Id
SELEKTOR1, SELEKTOR2
Mehrere unterschiedliche Selektoren
ELEMENT1ELEMENT2
Alle ELEMENT2-Tags die sich (direkt oder indirekt) in ELEMENT1-Tags befinden
ELEMENT1 > ELEMENT2
Alle ELEMENT2-Tags die sich direkt in ELEMENT1-Tags befinden
ELEMENT1 ~ ELEMENT2
Alle ELEMENT2-Tags die (direkt oder indirekt) einem ELEMENT1-Tag nachfolgen
ELEMENT1 + ELEMENT2
Alle ELEMENT2-Tags die direkt einem ELEMENT1-Tag nachfolgen
& SELEKTOR1
Parent-Selektor in nested Rules
Liste von einfachen Selektoren und Möglichkeiten der Gruppierung bzw. Verknüpfung
Selektor
Beschreibung
[attr]
Attribut-Selektor
[attr=value]
Attribut-Selektor mit Wert
[attr~=value]
Attribut-Selektor mit einer durch Leerzeichen getrennten Liste von Werten
[attr^=value]
Attributwert beginnt mit value
[attr$=value]
Attributwert endet mit value
[attr*=value]
Attributwert enthält value
Liste von Attribut-Selektoren
Pseudo-Klassen
Selektor
Beschreibung
:active
Element wurde angeklickt und Aktion wird ausgeführt
:empty
Leere Elemente (auch kein Text/Whitespace)
:first-child
Erstes Kindelement
:first-of-type
Erstes Kindelement eines Typs
:hover
Maus über Element
:lang()
Sprache des Elements
:last-child
Letztes Kindelement
:last-of-type
Letztes Kindelement eines Typs
:link, :visited
Nicht-Besuchte und Besuchte Links
:not()
Negation eines Selektors
:nth-child(), :nth-last-child()
N-tes Kindelement (even = gerade, odd = ungerade)
:nth-of-type(), :nth-last-of-type()
N-tes Kindelement eines Typs (even = gerade, odd = ungerade)
:only-child
Einziges Kindelement
:only-of-type
Einziges Kindelement eines Typs
:root
Root-Element
:target
Element-ID in URL-Fragment (#id)
Liste von Pseudo-Klassen
Pseudo-Elemente
Selektor
Beschreibung
::after, ::before
Bereich vor oder nach einem Element
::cue
Video-Untertitel
::first-letter, ::first-line
Erste(s) Zeichen/Zeile eines Textes
::selection
Ausgewählter Text
Liste von Pseudo-Elementen
Spezifität
Wenn ein CSS-Selektor mehrfach im Dokument steht gibt es einen Konflikt. In diesem Fall interpretiert der Browser immer die zuletzt notierte Regel.
Eine im Stylesheet weiter unten notierte Regel überschreibt also alle zuvor notierten identischen Selektoren.
Eine CSS-Regel wird nur dann von einer weiter unten notierten Regel überschrieben, wenn beide Selektoren identisch sind und das gleiche "Gewicht" haben.
Jede Art von Selektor hat ein über ein Punkte-System festgelegtes Gewicht das nicht verändert werden kann.
Das Gewicht des gesamten CSS-Selektors wird über die addierten Punkte der einzelnen Bestandteile ermittelt.
Der Browser wendet im Konfliktfall immer die Regel mit dem höchsten Gewicht, also der höchsten Punkte-Anzahl an, auch wenn diese Regel weiter oben im Quellcode steht. Dieses Verhalten nennt man Spezifität.
Selektor-Art
Beispiel
Punkte
Universal-Selektor
*
0
einfacher Typ-Selektor
p
1
Klasse
.infobox
10
Attribut-Selektor
[for]
10
Pseudo-Klasse
:hover
10
Pseudo-Element
::first-letter
10
ID
#abc123
100
inline Style-Attribut
style="color: red;"
1000
Punkteverteilung nach CSS-Spezifikation
Farben
RGB- und HSL-Farbmodell
Im Web werden Farben entweder durch einen von 140 Farbenbezeichnungen oder durch einen 24-Bit Farbwert
dargestellt.
Der Farbwert beginnt mit einem "#"-Zeichen gefolgt von jeweils einer zweistelligen Hexadezimalzahl für die drei
Bytes welche den
Wert für Rot, Grün und Blau darstellen.
Daraus ergeben sich über 16 Millionen Farben. Desweiteren gibt es eine CSS Funktion rgb() und eine
CSS Funktion rgba() für 32-Bit Farbwerte (Rot, Grün, Blau + Alpha
Transparenz). Alternativ können Farben durch die Funktionen hsl() und
hsla() mit Farbton (0-360), Sättigung und Helligkeit angegeben werden.
Es gibt drei Standard-Schriftbezeichnungen: serif, sans-serif,
monospace. Diese stehen jeweils für die Browsereinstellung des Systems für eine Schrift mit
Serifen (Bsp.: Times New Roman), ohne Serifen (Bsp.: Arial) und mit fester Zeichenbreite (Bsp.: Courier New).
Ihre Verwendung ist demnach unabhängig von den tatsächlich auf dem System installierten Schriften.
Die angegebene Schrift muss auf dem System des Browsers vorhanden sein.
Es kann eine Liste von Schriftarten angegeben werden und der Browser verwendet, von links nach rechts, die erste auf dem
System vorhandene Schriftart.
Mit der At-Regel @font-face lassen sich Schriftarten an den Browser ausliefern. Jede Variante (Bold, Italic, Regular,
Bold+Italic) derselben Schriftart muss mit einer eigenen @font-face-Regel unter demselben Namen registriert werden.
Es muss mindestens eine Datei mit dem entsprechenden Format angegeben werden. Mit local() kann auf eine bereits installierte
Schriftart verwiesen werden.
@font-face {
font-family: 'Source Sans Pro';
font-weight: 400;
font-style: italic;
src: local('Source Sans Pro'),
url('SourceSansPro-It.woff') format('woff');
}
Einbindung von Webschriften
Format
Dateiendung
Beschreibung
Browser
truetype (TrueType Font)
.ttf
Standard von Microsoft und Apple, nicht speziell für Webschriften
opentype (OpenType Font)
.otf
Erweiterung von TrueType von Microsoft und Adobe, nicht speziell für Webschriften
woff, woff2 (Web Open Font Format)
.woff, .woff2
Komprimierendes Containerformat für Webschriften (W3C Standard)
Liste von Dateiformaten für Webschriften
Hintergründe und Farbverläufe
Property
Beschreibung
Wert
background
Shorthand-Property für Hintergründe
Bsp.: background: #000000 url('bg.jpg') repeat;
background-attachment
Hintergrundbild mitscrollen (scroll) oder nicht (fixed)
Darstellung des Mauszeigers (Bildateien dürfen max. 32×32 Pixel groß sein und es muss eine
Alternative als Fallback angegeben werden, Bsp.: cursor: url('hand.png'), pointer;)
Legt die Zeichen für open-quote bzw. close-quote fest
Bsp.: quotes: '\201e' '\201C' '‚' '‘';
Content-Properties
Flexbox
Wenn das display-Property eines Elementes auf flex
oder inline-flex gesetzt wird, wird dieses Element zu einem Flex-Container.
Die Elemente direkt in diesem Container werden zu Flex-Items.
Bindet eine CSS-Datei in eine andere externe CSS-Datei ein
@media MEDIAQUERIES { }
Schränkt CSS-Regeln durch Media Queries ein
@supports FEATURE { }
Prüft ob bestimmte Feature vom Browser unterstützt werden
At-Regeln
Custom Properties
Mit Custom Properties lassen sich für Werte von CSS-Eigenschaften Variablen festlegen und
später mit der Funktion var() verwenden.
Sie müssen mit zwei Minus-Zeichen beginnen (--).
Nicht standardisierte Properties, Funktionen und Selektoren werden von den Browserherstellern mit einem Prefix
beginnend mit einem Minus-Zeichen (-) versehen um diese zu kennzeichnen.
Sollten die Properties, Funktionen oder Selektoren später in den Standard aufgenommen werden, wird das Prefix
entfernt.
Rechenausdruck mit +, -, *, /; Konstanten wie e oder pi können verwendet werden; Vor und nach + oder- muss zwingend ein Leerzeichen geschrieben werden!