zur Gesamtnavigation A A A

CSS - ein Spickzettel

Vorbemerkung

Die Informationen zu CSS wurden von mir schon vor Jahren zusammengestellt, um mir als Spickzettel zu dienen, wenn bestimmte Effekte mit CSS erzeugt werden sollen. Daher fehlt eine generelle Einführung in den Aufbau von CSS-Anweisungen. Auch fehlen Aspekte zu CSS, die für mich bislang nicht relevant waren.

Einige Hinweise zu den CSS-Anweisungen sind sehr kurz gehalten. Manche Stichworte sind nur der Vollständigkeit halber enthalten, werden aber nicht näher erläutert, da auch diese bislang für mich keine Relevanz besaßen.

Im Internet sind ausführlichere Dokumentationen verfügbar (z.B. www.w3schools.com (englisch), wiki.selfhtml.org (deutsch) ).

Sehr hilfreich ist auch die Seite www.caniuse.com, wenn man ermitteln möchte, wie gut CSS-Eigenschaften von den verschiedenen Browsern umgesetzt werden.

zum Anfang

Media-Queries und medienspezifische Style-Sheets

Um Internetseiten an das Ausgabemedium anzupassen gibt es verschiedene Alternativen: Media-Queries innerhalb eine style-Elements im Abschnitt <head> einer Internetseite, Media-Queries innerhalb eines Style-Sheets (= *.css-Datei) und medienspezifische Style-Sheets.

Durch MediaQueries können innerhalb einer Datei unterschiedliche Styles für verschiedene Medien oder unterschiedliche viewport-Breiten ausgeliefert werden. Der Browser braucht dann nur eine Datei für die Style-Informationen anzufordern, wohingegen bei der Verteilung auf mehrere Style-Sheets der Browser u.U. mehrere Dateien anfordern muss.

Eine Media-Querie hat immer folgende Struktur
@media Medienname { CSS-Anweisungen für die verschiedenen Selektoren }

Typische Mediennamen sind: screen, print.

Durch den Hinweis „only“ in der folgenden Media-Querie wird erreicht, dass nur neuere Browser die Anweisungen laden, die in dem nachfolgenden geschweiften Klammerpaar stehen. Ansonsten besteht die Gefahr, dass ältere Browser, welche die Angaben zur Mindestgröße/Maximalgröße nicht kennen und daher ignorieren, fälschlicherweise die Anweisungen laden und immer ausführen, egal wie breit der viewport ist.
@media only screen and (min-width:320px) and (max-width:760px) { …}

Es können auch die Angaben (width: zahlpx), (height:zahlpx), (min-height:zahlpx), (maxheight:zahlpx) , (device-width:zahlpx), (device-height:zahlpx), und orientation(landscape) bzw. orientation(portrait) als Bedingungen verwendet werden.

In einer Datei können zwar beliebig viele Media-Queries notiert werden, doch ist es sinnvoll, die css-Anweisungen, die zu einem bestimmten Ausgabemedium gehören, zu einer Media-Querie sammenzufassen.

Das Aufteilen des Style-Anweisungen auf zwei oder mehrere css-Dateien kann die Wartung der Style-Anweisungen erleichtern und ermöglicht es auch, abhängig von der aufgerufenen Seite oder bestimmten Vorgaben durch den Nutzer nur die benötigten CSS-Anweisungen auszuliefern und anzuwenden.

Ein Style-Sheet wird zu einem medienspezifischen Style-Sheet, wenn bei der Verlinkung des Style-Sheets im Abschnitt <head> der aufrufbaren Seite das Attribut "media" vorhanden ist. "zac4web" enthält neben dem allgemeinen Stylesheet "kern.css" unter anderem auch die beiden Stylesheets "screen.css" und "print.css". Beim Einbinden der Datei "screen.css" wird angegeben, dass die Anweisungen aus dieser Style-Datei nur für die Ausgabe auf einem Monitor (=screen) gelten sollen. Die Anweisungen aus "print.css" sollen vom Browser dagegen nur beim Drucken angewendet werden. Die Aufteilung auf verschiedene Style-Dateien, soll die Pflege der css-Anweisungen erleichtern. Im Abschnitt "<head> der aufrufbaren Seiten werden die Links zu den Stylesheet "screen.css" (<link rel=“stylesheet“ type=“text/css“ media=“screen“ href=“…“&/gt;) und "print.css" (<link rel=“stylesheet“ type=“text/css“ media=“print“ href=“…“&/gt;) nach dem Link zu dem Stylesheet "kern.css" ausgegeben, damit die Anweisungen aus dem allgemeinen Style-Sheet nicht die spezifischeren Angaben aus den medienspezifischen Style-Sheets überschreiben.
Werden allerdings in einem "zac4web"-Projekt für eine Seite zusätzliche Style-Dateien über die Kopfvariablen eingebunden, so werden diese Dateien von "zac4web" nach der Datei "print.css" und ohne das Attribut "media" eingebunden.

zum Anfang

CSS-Kaskade

Zu einer Internet-Seite werden oftmals CSS-Anweisungen ausgeliefert, die sich in Bezug auf ein Element innerhalb der Internet-Seite widersprechen. Daher gibt es für die Browser eine festgelegte Reihenfolge, in welcher sie die CSS-Anweisungen anwenden sollen. Von zwei konkurrierenden CSS-Anweisungen ist die auszuführen, die innerhalb der Kaskade der CSS-Anweisungen an höchster Stelle steht.

Für die CSS-Anweisungen gilt folgende Kaskade:

  1. Anweisungen, die mit !important gekennzeichnet sind, können nur durch nachfolgende Anweisungen, die ebenfalls als !important gekennzeichnet sind, überschrieben werden. Die Zeichenfolge !important steht dabei unmittelbar vor dem Semikolon, mit dem die Anweisung endet.
  2. Bei konkurrierenden Anweisungen für ein Element, wird die Wertigkeit der verschiedenen Anweisungen wie folgt ermittelt, jeder ID-Selektor in der Anweisung zählt 100, jeder Klassen-Selektor oder Pseudo-Klassen-Selektor innerhalb der Anweisung 10 und jedes HTML-Element oder Pseudo-Element 1. Die Werte werden zu einem Rangfolge-Wert addiert.
    (Achtung: Sofern vor einer Style-Anweisung mehrere Elemente genannt werden, die durch Kommata getrennt werden (Kurzschreibweise), werden zur Berechnung der Wertigkeit nur die Werte gezählt, die zu dem untersuchten Element gehören, und die Werte für die anderen Elemente ignoriert)
  3. Bei gleichem Rangfolge-Wert für unterschiedliche Anweisungen gilt, später definierte Anweisungen sind höherwertig als früher definierte
    1. Benutzeranweisungen sind die am spätestens definierten
    2. dann folgen die Anweisungen im HTML-Dokument, wobei folgende Reihenfolge beachtet werden muss
      1. Anweisungen per style-Attribut für das HTML-Element innerhalb des HTMLDokuments: am höchsten
      2. Style-Anweisungen innerhalb des HTML-Dokuments, je näher vor dem HTML-Element: desto wichtiger
      3. Style-Anweisungen in den per <link ...>-Anweisung eingebundenen stylesheets: zuerst genanntes am unwichtigsten
    3. zum Schluss folgen die Anweisungen des Anzeige-Gerätes (also des Browsers)

zum Anfang

Größeneinheiten

Mit einigen Einheiten kann nur Größe von Elementen für die Ausgabe in einem Browser beeinflusst werden, andere nur für die Ausgabe über einen Drucker, und wiederum andere können sowohl für die Größensteuerung in Browsern als auch auf Druckern eingesetzt werden

sowohl für Anzeige im Browser als auch für die Ausgabe auf Druckern

Wertebereich für Wirkung
% relative Breite oder Höhe des Elements in Bezug auf das Elternelement positive Zahl ermöglicht innerhalb eines Containers die Anpassung der Elemente, abhängig von der Größe des Containers
auch geeignet, um Schriften prozentual zu verkleinern
em ähnlich wie px (Pixel)
rem relative Größe in Bezug auf die Standardgröße des Browsers der Nutzer kann diese Größe selber verändern => er erhält die Seite dann in der von ihm gewünschten Schriftgröße => mit px-Angaben fixe Größen, Positionen von Elementen (z.B. Schaltern) können dazu führen, dass nicht der gesamte Text angezeigt wird/Texte sich überlappen

nur für die Anzeige im Browser

Wertebereich für Wirkung
vw
vh
relative Breite (vw) bzw. Höhe (vh) in Bezug auf den viewport (Anzeigebereich des Browsers) natürliche Zahl zwischen 1 und 100 Container (HTML-Elemente wie <div>, die andere HTML-Elemente enthalten können ermöglicht eine Anpassung des Elements (Containers) an die Breite/Höhe des Bildschirmfensters
px fixe Größe Ganze Zahlen – positive und negative – allerdings können negative Zahlen u.U. zu ungewünschtem Verhalten der Browser führen nur durch explizites Überschreiben der Elementwerte können die so formatierten Elemente vom Nutzer in der Größe verändert werden.
px ist eine sinnvolle Größeneinheit für margin/padding und border, um diese unabhängig vom viewport oder der vom Nutzer eingestellten Schriftgröße darstellen zu können.
Nachteil: diese Einheit kann aufgrund des borderbox-Modells zu ungewünschten Zeilenumbrüchen führen bei anderen Breiten des Browserfensters

nur für die Ausgabe auf Druckern

Wertebereich für Wirkung
pt fixe Größe positive ganze Zahlen fixe Größen für den Druck – z.B. für die Schriftgröße
Nutzer kann sie durch Einstellungen im Browser überschreiben, falls er seine Einstellungen als !important kennzeichnet

Bei einem Wert von 0 für eine Größe ist keine Größeneinheit erforderlich.

Bei einem flexiblen Layout sind feste Größeneinheiten für maximal- und minimal-Weiten bzw. Höhen von (Block-)Elementen möglich, als Grenzen für eine per relativer Größeneinheit definierten Weite bzw. Höhe.

Die parallele Verwendung von fixen Größeneinheiten für margin, padding und border und von relativen Größeneinheiten für width verschiedener parallel anzuordnender Blöcke auf einer Seite kann bei unterschiedlichen Browserbreiten dazu führen, dass mal alle Blöcke nebeneinander angezeigt werden, mal aber auch die Blöcke auf verschiedene „Zeilen“ verteilt werden. Letzteres passiert immer dann, wenn die Addition aller horizontalen Breitenangaben (umgerechnet in Pixel) größer ist als die zur Verfügung stehen Pixelbreite des Viewpoints. Bei der Umrechnung ist zu beachten, dass bei der Berechnung von Pixelbreiten aus relativen Einheiten, immer auf ganze Pixel gerundet werden muss, weil nur ganze Pixel darstellbar sind. Dabei ist das Rundungsverhalten der Browser unterschiedlich.

zum Anfang

Kurzschreibweisen

Kurzschreibweisen exitstieren für die folgenden Eigenschaften: margin, padding, border, outline, font, background, list-style

Kurzschreibweise für margin:

  • die vier Werte werden bei den Kurzschreibweisen immer im Uhrzeigersinn, beginnend bei –top, notiert und durch Leerzeichen getrennt: "margin: 3px 15px 4px 10px;"
  • falls rechts und links identische Werte sind, kann statt: "margin: 3px 10px 4px 10px;" auch: "margin: 3px 10px 4px;" geschrieben werden
  • falls rechts und links identische Werte und oben und unten identische Werte sind, kann statt: "margin:4px 10px 4px 10px;" auch "margin: 4px 10px;" geschrieben werden
  • falls alle Werte identisch sind geht statt: "margin: 5px 5px 5px 5px;" auch "margin:5px;" geschrieben werden.

Die gleichen Regeln gelten auch für padding und border.

Für border kann neben der Breitenangabe zusätzlich auch die Art der Linie (z.B. solid, dotted) und im Anschluss daran die Farbe notiert werden, also "border: 3px solid black;"

Falls z.B. zwei (oder mehr) sich ergänzende Schatten für ein Element gesetzt werden sollen, ist dieses wie folgt möglich:
"text-shadow: [Abstand horizontal] [Abstand vertikal] [Weichzeichnungsfaktor] [Farbe], [Abstand horizontal] [Abstand vertikal] [Weichzeichnungsfaktor] Farbe];".
Die Abstände und der Weichzeichnungsfaktor werden als Größenangabe notiert (z.B. mit der Einheit px). Die Angaben für die einzelnen Schatten werden durch Kommata voneinander getrennt, die gesamte Anweisung wird durch ein Semikolon beendet.

zum Anfang

Schriftart vorgeben

Mit der CSS-Eigenschaft "font-family" kann man für HTML-Elementen, welche Text enthalten können, vorgeben, wie die Schrift aussehen soll.

Häufig werden mehrere Angaben für "font-family" kombiniert, z.B. "font-family: Arial, sans-serif;". Falls der Browser, der diese css-Anweisung erhält, auf die Datei mit den Zeichen für die Schriftart "Arial" zugreifen kann, wird er diese für die Ausgabe des Textes verwenden. Falls nicht, wird die nächste Vorgabe in der Anweisung getestet.

Meist endet die Vorgabe für "font-family" wie in dem Beispiel mit einem der Werte "serif" (= mit Serifen) und "sans-serif" (= ohne Serifen) seltener mit "monospace" (= fixe Zeichenabstände) oder auch "fantasy" (= Schmuckschrift) . Diese Werte kennzeichnen das generelle Aussehen der gewünschten Schrift. Es wird davon ausgegangen, dass jeder aktuelle grafische Browser über eine Schriftart für jede dieser vier Gruppen verfügt. Da Schmuckschriften äußerst unterschiedlich sein können, kann die Angabe "fantasy" allerdings je nach Browser zu stark abweichendem Aussehen der Texte führen. Vermutlich wird deshalb diese generische Angabe für die Schrift nicht von jedem Browser umgesetzt.

Wenn man die Schriftart für sein Webprojekt exakt vorgeben möchte, um sicherzustellen, dass bei jedem Aufrufer auf allen Geräten die gleiche Schrift verwendet wird, sollte man die Schriftart in sein Webprojekt einbinden. Im Internet existieren verschiedene Websites, die Schriftarten zum Download anbieten. Andere Firmen erlauben das Einbinden von Schriften, die auf einem Server der Firma gespeichert sind. Auf den Seiten dieser Anbieter erhält man dann auch Informationen, welche CSS-Anweisungen eingesetzt werden müssen, damit die ausgewählte Schriftart tatsächlich genutzt werden kann und welche sonstigen Schritte erforderlich sind.

zum Anfang

Farben und Transparenz

Es existieren verschiedene Notationsformen für Farben in CSS. Dabei sind die Notationsformen nicht nur für das Attribut color, welches die Textfarbe eines Elements bestimmt, sondern für alle Attribute, welche sich auf Farben beziehen (z.B. background-color, text-shadow, …) verwendbar

NotationsformHinweise
color: blue; es gibt nur eine geringe Anzahl von Farbbezeichnungen.
color: #56f2a0; dies ist die Hexadezimal-Schreibweise. Die Buchstaben a, b, c, d, e und f können sowohl als Kleinbuchstaben als auch als Großbuchstaben notiert werden.
Nach der Raute# geben die ersten zwei Zeichen die „absolute Menge“ an Rot in der gewählten Farbe an, die nächsten zwei Zeichen die „absolute Menge“ an (Hell-)Grün und die letzten beiden Zeichen die „absolute Menge“ an Blau.
Für jede Farbe kann der Wert zwischen 00 (gar nicht) und ff (=255, ganz viel)liegen.
Wenn von allen Farben gleichmäßig viel verwendet wird, resultiert daraus ein Grauwert, wobei der Grauwert umso heller ist, je mehr Farbe eingesetzt wird (#ffffff ist weiß) und umgekehrt umso dunkler ist, je weniger Farbe eingesetzt wird (#000000).
Wird von zwei Farben gar nichts (also 00) und von der anderen ganz viel (ff) eingesetzt, so ist die Grundfarbe kräftig. Um von einer Grundfarbe einen Pastellton zu erzeugen, muss von dieser Grundfarbe sehr viel (z.B. ff) und von den anderen beiden Grundfarben ziemlich viel (z.B. cc) eingesetzt werden.
color: rgb(132,5,255); Diese Farbcodierung ist identisch wie bei der hexadezimalen Schreibweise, nur dass hier die dezimalen Farbwerte eingetragen werden, also die Zahlen zwischen 0 und 255 für die Farbwerte rot (r), grün (g) und blau (b), und die Zahlen durch Kommata getrennt werden.
color: rgba(132,5,255,0.8); Dies ist eine Erweiterung der rgb-Farbdefinition um den sogenannten Alpha-Kanal, der die Transparenz der Farbe beeinflusst. Für die Angabe zum Alpha-Kanal sind alle Dezimalzahlen zwischen 0 und 1 zulässig sind. Ein Wert von 0 bedeutet die gewählte Farbe ist vollkommen durchsichtig, ein Wert von 1 dagegen, dass die gewählte Farbe vollkommen undurchsichtig sein soll.
color: hsl(360,70%,50%); Dies ist die von Druckern bevorzugte Farbdefinition. Der erste Wert gibt die Farbe an (die in einem Kreis angeordnet sind), der zweite Wert die Sättigung und der dritte Wert die Helligkeit.
Für den ersten Wert sind Werte zwischen 0 und 360 möglich (höhere Werte werden automatisch modulo 360 gerechnet). Die Werte 0 und 360 entprechen dem reinen Rot, der Wert 120 entspricht dem (Hell-)Grün, und der Wert 240 dem Blau-Wert. Bei Werten zwischen 0 und 120 wechselt die Farbe von rot über organge und gelb zu hellgrün, bei Werten zwischen 120 und 240 von hellgrün über türkis und hellblau zu dem reinen Blauton, und bei Werten zwischen 240 und 360 von dem reinen Blauton über lila und pink zu dem reinen Rot.
Ist der Wert für die Sättigung bei 0% bedeutet dieses, dass keine Farbe vorhanden ist (also schwarz), und ein Wert von 100%, dass viel von der Farbe enthalten ist. Ein Wert dazwischen ergibt einen „Grauton“.
Ist der Wert für die Helligkeit sehr hoch (maximal 100%), so ist die Farbe sehr hell bis weiß, bei einem Wert von 0% wird die Farbe immer dunkler bis hin zu schwarz. Bei einem Wert von 50% wird die reinste Farbe angezeigt.
color: hsla(0,100%,50%,0.8); Dies ist eine Erweiterung der hsl-Farbdefinition um den sogenannten Alpha-Kanal, der die Transparenz der Farbe beeinflusst. Auch hier sind für die Angabe zum Alpha-Kanal alle Dezimalzahlen zwischen 0 und 1 zulässig. Ein Wert von 0 bedeutet, die Farbe ist vollkommen durchsichtig, ein Wert von 1 dagegen, die Farbe ist vollkommen undurchsichtig.

zum Anfang

Hintergrundgrafiken für Elemente – Größe beeinflussen

Durch backgroud-size lässt sich die Größe einer Hintergrundgrafik einstellen:

background-size: 100px 200px; Diese Angabe erzwingt, dass die Grafik genau 100px breit und 200px hoch ist, auch wenn dadurch die Grafik verzerrt wird.
background-size: 100% 100%; Diese Angabe erzwingt, dass die Grafik genau das Element ausfüllt, auch wenn die Grafik dadurch verzerrt wird.
background-size: contain; Die Grafik wird so groß wie möglich angezeigt.
Weicht das Breiten/Höhen-Verhältnis des Container-Elements von dem des Hintergundbildes ab, wird nicht der gesamte Container mit der Grafik gefüllt.
background-size: cover; Die Grafik füllt immer das Container-Element aus und wird nicht verzerrt. Stattdessen werden Teile der Grafik abgeschnitten, wenn das Breiten/Höhen-Verhältnis des Container-Elements von dem des Hintergundbildes abweicht.

zum Anfang

CSS und Bewegung

In Zusammenhang mit Mausereignissen wie hover, active oder dem Tastaturereignis focus können Elemente bewegt werden.

Zum einen kann dieses ruckartig durch Änderung der Größenangaben für width und height für das Element passieren. Dies hat dann oftmals Auswirkung auf die Positionierung der benachbarten Geschwister des Elements.

Darüberhinaus sind folgende Befehle möglich:

transform: rotate(valuedeg); value kann eine beliebige Zahl sein, die Einheit muss deg sein für Grad und ohne Leerzeichen auf die Zahl folgen.
transform:translate(valueEinheit,valueEinheit); value ist eine beliebige positive oder negative Zahl, die Einheit ist eine zugelassene Größeneinheit wie pixel.
Der erste Wert verschiebt das Element horizontal, der zweite Wert vertikal
transform: scale(value); value ist eine beliebige positive Dezimalzahl.
Ein Wert größer als 1 führt zur Vergrößerung, ein Wert kleiner als 1 zur Verkleinerung.
transition (value1 value2 value3); dieser Befehl ermöglicht fließende Übergänge für ein Element.
Dabei bezeichnet value1 die Eigenschaft für die transition gelten soll (all => alle, width => nur Breite, …).
value2 gibt an, wie schnell der Effekt sein soll. Die Einheit von value2 ist s (für Sekunde). Also könnte für value2 z.B. 1.2s notiert werden.
value3 gibt die Art der Beschleunigung für den Übergang an. Zulässige Werte sind: ease, easein, ease-out, ease-in-out und linear.
value2 und value3 sind optional. Dabei werden value1, value2 und value3 innerhalb der Anweisung nur durch Leerzeichen getrennt.

zum Anfang

Selektoren

Neben den HTML-Elementen können zusätzlich die Attribute id und class als Selektoren genutzt werden, um einem Element eine bestimmte Formatierung zuzuweisen. Durch die Verwendung der Attribute id und class kann das Aussehen genauer gesteuert werden, da es beliebig viele Bezeichner dafür geben kann, während die Anzahl der verschiedenen HTML-Elemente beschränkt ist.

Werte für die Attribute id, class und name:

  • müssen mit einem Buchstaben beginnen
  • sollten keine Umlaute oder „ß“ enthalten
  • sollten möglichst nur kleine Buchstaben des ASCII-Zeichensatzes, Zahlen und Unter- sowie Bindestriche enthalten

Während den Attributen "id" und "name" eines Elements jeweils nur ein Wert zugewiesen werden kann, darf das Attribut "class" eines Elements mehrere Werte besitzen. Mehrere Werte für das Attribut class werden durch Leerzeichen voneinander getrennt: class=“value1 value2 value3;“.

Die Werte für die Attribute "id" und "name" müssen innerhalb eines Dokuments eindeutig sein. Es darf also innerhalb eines Dokuments keine zwei Elemente geben, die den gleichen Wert für das Attribut "id" oder "name" besitzen. Für die Werte des Attributs "class" gilt diese Einschränkung nicht. Damit eignet sich das Attribut "class" als CSS-Selektor, um verschiedenen Elementen bestimmte CSS-Eigenschaften zuweisen zu können.

In den CSS-Anweisungen erkennt man die Werte der Attribute id, die als Selektor verwendet werden, an der vorangestellten Raute (#). Wurde z.B. im Dokument ein Abschnitt mit <div id="main"> gekennzeichnet, so kann dieser Abschnitt über die Style-Anweisung #main {...} formatiert werden.

Klassen-Selektoren erkennt man in den Style-Anweisungen am vorangestellten Punkt (.), z.B. "div .links {...}".
Wenn zwischen "div" und ".links" ein Leerzeichen steht, bedeutet dieses, die CSS-Anweisung gilt für sämtliche Elemente innerhalb von HTML-Elementen des Typs "div", denen der Wert "links" als Wert für das Attribut "class" zugeordnet wurde. Fehlt das Leerzeichen zwischen "div" und ".links", gilt die CSS-Anweisung nur für die HTML-ELemente vom Typ "div", die selber als Wert für das Attribut "class" die Zeichenfolge "links" besitzen.

Neben den zuvor genannten Selektoren gibt es noch eine Reihe weiterer Notationen für CSS-Selektoren. Einige davon werden nachfolgend beschrieben

Der Universal-Selektor *

BeispieleWirkung
* {attrX:valueX;} Allen Elementen, die das Attribut attrX besitzen können, wird der Wert valueX für dieses Attribut zugeordnet.
#main * {attrX:valueX;} Nur alle HTML-Elemente innerhalb des Abschnitts mit dem Attribut id="main" werden entsprechend formatiert.

Kind-Selektoren

BeispieleWirkung
#main>p {attrX:valueX;} Alle direkten Kinder des Abschnitts mit dem Attribut id="main", die vom Elementtyp p sind werden entsprechend formatiert, aber nicht die weiteren Abkömmlinge, also z.B. nicht #main header p.
#main p {attrX:valueX;} Neben den direkten Kindern vom Typ p des Abschnitts mit id="main" werden auch alle weiteren Abkömmlinge vom Typ p innerhalb des Abschnitts mit id="main" entsprechend formatiert, die Anweisung gilt daher z.B. auch für #main header p .

Folgeelement-Selektoren

BeispieleWirkung
h1+p {attrX:valueX;} Sofern p direkt auf h1 folgt, erhält sein Attribut attrX den Wert valueX, sonst nicht.
h1#id1~p {attrX:valueX;} Alle p, die mit h1#id1 auf der gleichen Hierarchie-Ebene stehen (also das gleiche Elternelement besitzen) und die auf dieses h1 mit id=“id1“ folgen, erhalten für das Attribut attrX den Wert valueX.

Attribut-Selektoren

BeispieleWirkung
h1[attrY] {attrX:valueX;} Sofern für h1 für das Attribut attrY irgendein Wert gesetzt wurde, erhält sein Attribut attrX den Wert valueX.
h1[attrY=”valueY”] {attrX:valueX;} Sofern h1 für das Attribut attrY genau den Wert valueY besitzt, erhält sein Attribut attrX den Wert valueX.
p[attrY~=”valueY”] {attrX:valueX;} Sofern p für das Attribut attrY den Wert valueY als einzelnes Wort besitzt (es dürfen also auch noch andere Wörter zugewiesen sein, wie z.B. bei class=“valueA valueY valueZ“), erhält sein Attribut attrX den Wert valueX.
#main[attrY|=”valueY”] {attrX:valueX;} Sofern für den Abschnitt mit id="main" für das Attribut attrY der Wert valueY am Anfang einer durch Bindestrich getrennten Zeichenfolge steht (z.B. valueY=“en“ und attrY=“en-US“), erhält sein Attribut attrX den Wert valueX.
a[attrY^=”valueY”] {attrX:valueX;} Sofern für a für das Attribut attrY der Wert mit der Zeichenkette valueY beginnt, erhält sein Attribut attrX den Wert valueX.
a[attrY$=”valueY”] {attrX:valueX;} Sofern für a für das Attribut attrY der Wert mit der Zeichenkette valueY endet, erhält sein Attribut attrX den Wert valueX.
a[attrY*=”valueY”] {attrX:valueX;} Sofern für a für das Attribut attrY der Wert die Zeichenkette valueY enthält, erhält sein Attribut attrX den Wert valueX.

zum Anfang

Pseudo-Klassen und Pseudo-Elemente

Im ausgelieferten HTML-Code existieren diese Klassen und Elemente selber nicht. Die Pseudo-Klassen und Pseudo-Elemente werden vom Browser – soweit er die Pseudo-Klassen und Pseudo-Elemente beherrscht – bei der Anzeige der HTML-Dokumente immer den echten HTML-Elementen hinzugefügt. In den Style-Anweisungen können Formatierungs-Hinweise für die Pseudo-Klassen und die Pseudo-Elemente notiert werden. Style-Anweisungen für Pseudo-Klassen und Pseudo-Elemente beziehen sich immer auf mindestens ein „echtes“ HTML-Element (z.B. „a“ oder „img“, …).

Pseudo-Klassen

seit CSS 1 seit CSS 2 seit CSS 3 für HTML­Element Bemerkungen
:link
:visited
:hover
:focus
:active
a werden Ankerklassen genannt, damit kann die Darstellung von links gesteuert werden.
Die Pseudoklassen sind hier nach ihrer Stärke geordnet. :link ist am stärksten, :active am schwächsten. Es müssen nicht für alle Ankerklassen Style-Anweisungen notiert werden. Die Reihenfolge der Ankerklassen für ein konkretes HTML-Element sollte innerhalb der Style-Anweisungen wie hier in der Tabelle sein, damit die schwächeren nicht von den stärkeren überschrieben werden. Nur :hover und :focus könnten getauscht werden, da :hover sich auf ein Maus-Ereignis bezieht und :focus auf ein vergleichbares Tastatur-Ereignis.
:lang
:target markiert ein Element, das gerade durch einen Link angesprochen wird.
Es ist sinnvoll in Verbindung als a:hover:target und a:focus:target
:not(irgendwas) Die Style-Anweisung gilt für alle HTML-Elemente, die vor dem Doppelpunkt genannt sind, aber nicht die Eigenschaft (irgendwas) besitzen. Dabei kann „irgendwas“ ein HTML-Element sein, ein Attribut oder ein Attribut-Wert, jeder Selektor ist also möglich.
:first-child
:last-child
:nth-child(zahl)
:nth-last-child(zahl)
:only-child
Unmittelbar vor dem Doppelpunkt wird der Element-Typ notiert, auf den sich der Selektor bezieht, davor steht das Elternelement. first-child wirkt sich auf das erste Kind-Element aus, last, auf das letzte, only, dann wenn es nur ein einziges davon gibt, bei nth-child(zahl) wird von vorne gezählt, bei nth-lastchild(zahl) von hinten. Zahl kann eine Zahl wie 3 sein, dann wird genau das dritte Element gezählt, Zahl kann aber auch ein Ausdruck wie 2n+1 sein, dann wird jedes ungerade Kind-Element ausgewählt.
:first-of-type
:last-of-type
:nth-of-type(zahl)
:nth-last-of-type(zahl)
:only-of-type
Vor dem Doppelpunkt wird der Element-Typ notiert, auf den sich der Selektor bezieht. Die einzelnen Angaben funktionieren ähnlich wie die –child-Selektoren, nur beziehen sie sich nicht auf Kind-Elemente eines Elternelements, sondern auf die Elemente innerhalb der jeweiligen HTML-Seite
:root
:empty Damit werden alle Elemente selektiert, die keine Kind-Elemente besitzen, die also leer sind. Sobald ein Element ein Zeichen beinhalten, ist es nicht mehr leer, egal, welches Zeichen das ist.
:checked für Formular-Elemente
:default
:enabled
:disabled
:required
:optional
:read-only
:read-write
:valid
:invalid
:out-of-range
wahrscheinlich auch für Formular-Elemente

Pseudo-Elemente

CSS 2 CSS 3 Wirkung
:before {content: ...;}
:after {content: ...;)
::before {conten: ...;}
::after {content: ...;}
Damit ist es möglich, vor (before) oder nach (after) dem entsprechenden HTML-Element vom Browser das einzufügen, was durch das Attribut content definiert ist. Außerdem können für den content in der geschweiften Klammer Formatierungshinweise notiert werden.
:first-line ::first-child bezieht sich nur auf die erste Zeile des HTML-Elements in dem Browserfenster. Wenn das Fenster breiter ist, ist die Zeile länger, wenn das Fenster schmal ist, also kürzer.
:first-letter ::first-letter ermöglicht, den ersten Buchstaben eines HTML-Elements besonders zu formatieren, so wie es auch im Buchdruck teilweise durchgeführt wird, das Zeichen besonders groß darzustellen und den nachfolgenden Text darum herum fließen zu lassen.
::selection

zum Anfang

CSS-Eigenschaft: display

Vorgabewert fürEigenschaften
block div, p, h_X definiert einen Kasten, der einen Absatz erzeugt, falls nicht durch float die Eigenschaft gemildert wird
inline a, strong, i, b, em, span, img, br stehen in dem normalen Textfluss, erzeugen keine neuen Zeilen, Angaben zu margin-top, margin-bottom, height und width werden nicht wirksam
inline-block erzeugt keinen Absatz, fließen im Text mit, können aber Werte für die Eigenschaften height, margin, padding, und border erhalten.
list li definieren zwar einen rechteckigen Kasten, der einen Absatz erzeugt, aber bestimmte Teile wie das Aufzählungszeichen, können daraus hervorragen
table ermöglicht optisch gute und flexible Spalten, für Kindelemente muss das Attribut display: table-cell gesetzt werden
flex ermöglicht sehr flexible Darstellungen. Die Kind-Elemente können verschiedene Attribute, die mit "flex" beginnen, erhalten.

Der Display-Wert kann explizit durch Zuweisung geändert werden.

Die Zuweisung eines Display-Wertes, der vom Vorgabewert abweicht, kann nicht verwendet werden, um die Verschachtelungsregeln von CSS zu umgehen. So kann a auch dann nicht p umschließen, wenn für a display:block gelten soll.

Durch die Zuweisung eines der Werte right oder left für das Attribut float verhalten sich Elemente teilweise wie Block-Elemente

Polyfills sind kleine JavaScript-Dateien, mit denen Eigenschaften bei Browsern „nachgerüstet“ werden. Sie funktionieren natürlich nur dann, wenn JavaScript in dem Browser auch aktiviert ist.

Polyfills existieren z.B. für folgende nützliche CSS-Eigenschaften:

CSS-EigenschaftWirkungsweise
display: table; / display:table-cell ermöglicht optisch gleich-lange Spalten, z.B. wird die Hintergrundfarbe einer Spalte so lange wiederholt, bis die längste der Nachbarspalte zu Ende ist. Auch kann die Breite von Nachbarspalten auf diese Weise variabel gestaltet werden
display: flex; / flex:; flex-flow:; flex-direction: ermöglicht sehr flexibles Layout

zum Anfang

Abstände verschmelzen

Die vertikalen Abstände von Elementen, die durch die CSS-Anweisungen margin-top und margin-bottom erzeugt werden, verschmelzen miteinander, falls die Elemente im Dokumentenfluss aufeinander folgen. Es wird dann der jeweils größte Wert genommen, dies gilt auch für ineinander verschachtelte Elemente, es sei denn, das Kind-Element besitzt einen Rahmen (border) und/oder einen padding, dessen Breite größer ist als 0.

Für gefloatete Kästen, absolut oder relativ positionierte Kästen gilt das nicht.

Wenn Kästen keinen Inhalt und auch keinen border und kein padding besitzen, verschwinden sie optisch im Browser. Damit leere Kästen, die zur Abstandserzeugung eingesetzt werden sollen, auch wirksam werden, muss ihnen ein padding oder ein transparenter border zugewiesen werden oder der Inhalt  

Horizontale Abstände verschmelzen niemals.

zum Anfang

Eigenschaften für CSS-Boxen

Mit dem Attribut box-sizing kann zwischen den verschiedenen Boxmodellen umgeschaltet werden.

box-sizing: content-box Default-Wert
Die Angaben width und height beziehen sich nur auf den Inhalt der Box, vorhandene Werte für padding und border müssen zu den Werten für width und height addiert werden, um den tatsächlich von dem Element eingenommenen Platz zu ermitteln.
box-sizing: border-box Es entspricht dem „normalen“ Verständnis für eine Box, bei dem in der Angabe für die Breite einer Box (width) auch die Breitenangaben für padding und border enthalten sind.
box-sizing: inherit übernimmt das Box-Modell des Elternelements.

zum Anfang

CSS-Eigenschaft: position

Der Wert für die Eigenschaft position wirkt sich darauf aus, wie die Werte für die Angaben top, right, bottom und left vom Browser interpretiert werden und das Element innerhalb des Dokumentes oder des Browserfensters positioniert wird.

static Default-Wert
Anordung der Elemente wie im Dokumentenfluss. Die Angaben top und left für das Element wirken sich nicht aus.
relative Wenn Positions-Angaben vorhanden sind, dann gelten diese immer relativ zur linken oberen Ecke des Elternelements.
Durch Positionsangaben, können relativ zum Elternelement verschobene Elemente, Geschwisterelemente überlagern, da die Positionsangaben für das eine Kind-Element keine Auswirkung auf die Positionsangaben für die anderen Kind-Elemente des gemeinsamen Elternelements haben.
Durch den Wert für das Attribut z-index kann bestimmt werden, welches Element im Vordergrund ist, wenn sich (zwei oder mehr) Elemente überlappen. Das Element mit dem höchsten z-index steht im Vordergrund.
absolute Die Positionsangaben beziehen sich immer auf die linke obere Ecke des nächstgelegenen Elternelements, das relative, absolute oder fixed positioniert ist. Sind alle übergeordneten Elemente static, bezieht sich die Angabe auf das Browserfenster, den viewport.
fixed Die Angabe bezieht sich immer auf den viewport, Angaben wie bottom und right sind neben top und left möglich.
Damit durch Elemente die an einer Kante des Browserfensters fixiert sind, nicht Inhalte unzugänglich werden, müssen für die Elemente, deren Inhalte durch das fixierte Element verdeckt wird, durch passende Werte für die Eigenschaft margin Freiräume im gemeinsamen Elternelement body geschaffen werden.

zum Anfang

 

© zacher-info.de

- Seite zuletzt geändert: 29.07.2021 - Elisabeth Zacher