Movatterモバイル変換


[0]ホーム

URL:


Zum Inhalt springen
WikipediaDie freie Enzyklopädie
Suche

Cascading Style Sheets

aus Wikipedia, der freien Enzyklopädie
Cascading Style Sheets
Dateiendung:.css
MIME-Type:text/css
Entwickelt von:World Wide Web Consortium
Art:Stylesheet-Sprache
Standard(s):Level 1 (Recommendation)
Level 2 (Recommendation)
Level 2 Revision 1 (Recommendation)
Level 2 Revision 2 (Recommendation)
www.w3.org/Style/CSS/


Cascading Style Sheets (englische Aussprache [kæsˌkeɪdɪŋˈstaɪlʃiːts]; für ‚gestufte Gestaltungsbögen‘;kurz:CSS) ist eineStylesheet-Sprache für elektronische Dokumente und zusammen mitHTML undJavaScript eine der Kernsprachen desWorld Wide Webs.[1] Sie ist ein sogenannterliving standard (dt.lebendiger Standard) und wird vomWorld Wide Web Consortium (W3C) beständig weiterentwickelt. Mit CSS werden Gestaltungsanweisungen erstellt, die vor allem zusammen mit denAuszeichnungssprachenHTML undXML (zum Beispiel beiSVG) eingesetzt werden.

Grundlagen

[Bearbeiten |Quelltext bearbeiten]

CSS wurde entworfen, um Darstellungsvorgaben weitgehend von den Inhalten zu trennen. Wenn diese Trennung konsequent vollzogen wird, werden nur noch die inhaltliche Gliederung eines Dokumentes und die Bedeutung seiner Teile in HTML oder XML beschrieben, während mit CSS gesondert davon, vorzugsweise in separaten CSS-Dateien, die Darstellung der Inhalte festgelegt wird (z. B. Layout, Farben und Typografie). Gab es anfangs nur einfache Darstellungsanweisungen, so wurden im Verlauf komplexere Module hinzugefügt, mit denen z. B. Animationen und für verschiedene Ausgabemedien verschiedene Darstellungen definiert werden können.

Elemente eines Dokumentes können aufgrund verschiedener Eigenschaften identifiziert werden. Dazu zählen neben dem Elementnamen (z. B.a für alleHyperlinks), ihrerID und ihrer Position innerhalb des Dokumentes (z. B. alle Bildelemente innerhalb von Linkelementen) auch Details wie Attribute (z. B. alle Linkelemente, derenhref-Attribut mitwww.example.com beginnen) oder die Position in einer Menge von Elementen (z. B. jedes ungerade Element einer Liste). MitCSS-Anweisungen können für jede solcher Elementgruppen Vorgaben für die Darstellung festgelegt werden. Diese Festlegungen können zentral erfolgen, auch in separaten Dateien, sodass sie leichter für andere Dokumente wiederverwendet werden können. Außerdem enthält CSS ein Vererbungsmodell für Auszeichnungsattribute, das die Anzahl erforderlicher Definitionen vermindert.

Mit CSS können für verschiedene Ausgabemedien (Bildschirm,Papier,Projektion,Sprache) unterschiedliche Darstellungen vorgegeben werden. Das ist nützlich, um z. B. die Verweisadressen von Hyperlinks beim Drucken aufzuführen, und um für Geräte wiePDAs undMobiltelefone, die kleine Displays oder eine geringeBildauflösung haben, Darstellungen anzubieten, die schmal genug und nicht zu hoch sind, um auf solchen Geräten lesbar zu bleiben.

CSS ist die Standard-Stylesheet-Sprache imWorld Wide Web. Früher übliche, darstellungsorientierte HTML-Elemente wiefont odercenter gelten als „veraltet“ (englischobsolete), das heißt, sie sollen in Zukunft aus dem HTML-Standard entfernt werden.[2] So gelten diese unter anderem seitHTML 4 (1997) als „unerwünscht“ und mitHTML5 als missbilligt (englischdeprecated).[3]

Geschichte und Versionen

[Bearbeiten |Quelltext bearbeiten]
CSS Snapshot 2021

Anfänge

[Bearbeiten |Quelltext bearbeiten]

Einen ersten Vorschlag für Web-Stylesheets gab es 1993, mehrere weitere folgten bis 1995. Am 10. Oktober 1994 veröffentlichteHåkon Wium Lie, ein Mitarbeiter vonTim Berners-Lee amCERN, den ersten Vorschlag für „Cascading HTML style sheets“,[4] die er später abgekürzt als „CHSS“ bezeichnet.[5]Bert Bos arbeitete zu dieser Zeit an derImplementierung eines Browsers namensArgo, der seine eigene Stylesheet-Sprache benutzte. Die beiden entschieden sich, CSS gemeinsam zu entwickeln. Es gab zu dieser Zeit auch andere Sprachen mit dem gleichen Ziel, die Erfinder von CSS brachten aber als erste die Idee auf, Regeln zu definieren, die über mehrere Stylesheets hinweg und innerhalb eines einzigen Stylesheets darüber entscheiden, welche CSS-Formatierung auf das betreffende Element angewendet werden soll.

Nach der Präsentation von CSS durch Lie auf der Konferenz „Mosaic and the Web“ inChicago 1994 und später mit Bos 1995 wurde dasWorld Wide Web Consortium (W3C) auf CSS aufmerksam. Lie und Bos arbeiteten mit anderen Mitgliedern in diesem Rahmen an CSS weiter. Im Dezember 1996 wurde dieCSS Level 1 Recommendation publiziert.

CSS2

[Bearbeiten |Quelltext bearbeiten]

CSS Level 2 (CSS2) wurde im Mai 1998 veröffentlicht. Bis Anfang 2010 wurde diese Empfehlung allerdings von keinem verbreiteten Webbrowser vollständig umgesetzt. Bereits ab 2002 hat das W3C an der überarbeiteten VersionCSS Level 2 Revision 1 (CSS 2.1) gearbeitet.[6] Die Erfahrungen mit CSS2 wurden hier aufgenommen, Unstimmigkeiten korrigiert und manche Teiltechniken gestrichen, die in verschiedenen Browsern nicht korrekt umgesetzt worden waren. Grundlegend neue Fähigkeiten wurden nicht eingebaut. Am 7. Juni 2011 wurde CSS 2.1 als fertige Empfehlung(Recommendation) veröffentlicht.[7] 2014 verarbeiteten die meisten Webbrowser CSS 2.1 weitgehend korrekt, nur wenige Teiltechniken wurden nicht vollständig unterstützt. Im April 2016 wurde der erste öffentliche Arbeitsentwurf von CSS 2.2 veröffentlicht.[8]

CSS3

[Bearbeiten |Quelltext bearbeiten]

Seit 2000 istCSS Level 3 in der Entwicklung.[9] Hier werden die Entwicklungen weiter vorangetrieben, die bereits mit CSS2 begonnen wurden. CSS3 wird im Gegensatz zu den Vorgängern modular aufgebaut sein, womit einzelne Teiltechniken (beispielsweise Steuerung der Sprachausgabe oder Selektoren) in eigenen Versionsschritten entwickelt werden können. So nähert sich CSS bei seinen Fähigkeiten mehr dem etabliertenDSSSL (fürSGML) an und wird wohl auch in Zukunft noch eine Alternative zu XML-basierten Stylesheet-Sprachen wieXSL-FO sein. Derzeit veröffentlichte und breit unterstützte Standards sind unter anderemCSS Color Level 3,CSS Namespaces,Selectors Level 3 undMedia Queries. Neben diesen Modulen stehen weitere Elemente zur Diskussion, etwa ein Layout-Modul und verschiedeneGrafikfilter.[10] Moderne Browser unterstützten im Jahr 2014 bereits viele CSS3-Module,[11] obwohl nur für wenige Teile bereits eine Empfehlung(Recommendation) durch das W3C vorgelegen hatte.[10] Im Laufe der Zeit gab es immer mehr Funktionen für CSS, sowie Empfehlungen vom W3C.

Im Frühjahr 2012 wurde berichtet, das W3C arbeite bereits an einem Nachfolger von CSS3, der mit der Versionsnummer 4 veröffentlicht werden solle.[12] Im September 2012 haben Vertreter der CSS-Arbeitsgruppe des W3C jedoch klargestellt, dass es keine Versionsnummer 4 geben soll: “There will never be a CSS4”.[13] Vielmehr soll die künftige Entwicklung des Standards darin bestehen, dass die einzelnen CSS-Module unter eigenen Versionsnummern weiterentwickelt werden können, während der Gesamtstandard den Namen CSS3 oder einfach CSS behalten soll.[13]

Syntax

[Bearbeiten |Quelltext bearbeiten]

Der Aufbau von CSS-Anweisungen

[Bearbeiten |Quelltext bearbeiten]
Selektor1[,Selektor2[,]]{Eigenschaft-1:Wert-1;Eigenschaft-n:Wert-n[;]}/* Kommentar *//* In eckigen Klammern stehen optionale Angaben */

Eine CSS-Anweisung (englischrule) gibt an, dass für festgelegte Teile eines Dokuments eine Kombination von bestimmten Eigenschaften gelten soll. Geschrieben wird sie als eine durch Kommata getrennte Aufzählung von Selektoren(„Für diese Typen von Teilen …“), gefolgt in geschweiften Klammern von einer semikolongetrennten Liste von Eigenschafts-Deklarationen(„… nimm die folgenden Eigenschaften!“). Jede Eigenschaftsdeklaration besteht aus der Bezeichnung der Eigenschaft, einem Doppelpunkt und dem Wert, den sie annehmen soll. Nach der letzten Eigenschaftsdeklaration ist vor der schließenden geschweiften Klammer ein abschließendes Semikolon erlaubt, aber nicht notwendig.

Um diese Teile einer Anweisung herum istLeerraum frei verwendbar. Häufig schreibt man den Doppelpunkt ohne Zwischenraum hinter den Eigenschaftsnamen, jede Eigenschaftsdeklaration in eine eigene Zeile und schließt auch die letzte Eigenschaft mit einem Semikolon. So kommt es bei späteren Änderungen weniger leicht zu Syntaxfehlern. Sollte es dennoch zu Syntaxfehlern kommen, eignet sich einCSS-Validator, um Fehler zu beheben.[14]

Ein Stylesheet darf beliebig viele solcher Anweisungen enthalten. Die folgende Tabelle enthält eine vollständige Übersicht aller Selektoren, mit denen Elemente (meistHTML-Elemente) ausgewählt werden können.

Selektoren

[Bearbeiten |Quelltext bearbeiten]

Ein Selektor nennt die Bedingungen, die auf ein Element zutreffen müssen, damit der nachfolgende Satz an CSS-Deklarationen mit seinen Darstellungsvorgaben auf das Element angewendet wird. Solche Bedingungen beschreiben eindeutig, welche Eigenschaften (Typ, Klasse, ID, Attribut oder Attributwert) Elemente haben müssen oder in welchem Kontext sie im Dokument stehen müssen (Existenz eines bestimmten übergeordneten Elementes oder eines Vorgängerelementes bestimmten Typs), damit die Darstellungsvorgaben für sie gelten sollen. In einem Selektor können mehrere Auswahlkriterien verknüpft sein.

MusterBedeutung: selektiert …VersionDefinitionErläuterung
einfache Selektoren
*jedes ElementCSS2Universal selectorUniversalselektor
Ejedes Element vom Typ ECSS1Type selectorsTypselektor
.cjedes Element der Klasse c

(analog[class~='c'], im Sinne dass die Klasse „c“ in der aufgelistet wird – andere Klassen, die auch den Buchstaben „c“ im Namen tragen, jedoch nicht - )

CSS1Class selectorsKlassenselektor
#myiddas Element mit der ID „myid“

(analog[id='myid'])

CSS1enID-Selektor
[foo]Elemente, deren „foo“-Attribut gesetzt ist

(unabhängig vom Wert)

CSS2Attribute selectorsAttributpräsenz
[foo=bar]Elemente, deren „foo“-Attribut mit dem Wert „bar“ belegt istCSS2Attributwert
[foo~=bar]Elemente, deren „foo“-Attribut das Wort „bar“ enthält

(z. B. „bar“ oder „bar quz“, nicht aber „barquz“)

CSS2
[foo|=bar]Elemente, deren „foo“-Attribut die Zeichenfolge „bar“ ist oder mit der Zeichenfolge „bar-“ beginntCSS2
[foo^=bar]Elemente, deren „foo“-Attribut mit der Zeichenfolge „bar“ beginntCSS3Substring matching attribute selectorsTeilübereinstimmung
[foo$=bar]Elemente, deren „foo“-Attribut mit der Zeichenfolge „bar“ endetCSS3
[foo*=bar]Elemente, deren „foo“-Attribut die Zeichenfolge „bar“ enthältCSS3
Kombinatoren
E Falle Elemente F, die Nachfahren eines Elements E sindCSS1Descendant selectorsNachfahren-Kombinator
E > Falle Elemente F, die ein Kind eines Elements E sindCSS2Child selectorsKind-Kombinator
E ~ Falle Elemente F, die einen Vorgänger E auf gleicher Ebene habenCSS3General sibling combinatorGeschwister-Kombinator
E + Falle Elemente F, die einen direkten Vorgänger E auf gleicher Ebene habenCSS2Adjacent sibling combinatorNachbar-Kombinator
Pseudoklassen
:linknoch nicht besuchte VerweiseCSS1link pseudo-classesPseudoklasse :link
:visitedbereits besuchte VerweiseCSS1Pseudoklasse :visited
:activedas Element, das gerade angeklickt istCSS1dynamic pseudo-classesPseudoklasse :active
:hoverdas Element, über dem sich der Mauszeiger befindetCSS2Pseudoklasse :hover
:focusdas Element, das den Fokus (z. B. durch die Tabulatortaste) erhalten hatCSS2Pseudoklasse :focus
:focus-visibleElement entspricht der Pseudoklasse :focus und dieUA über Heuristiken feststellt,

dass der Fokus speziell auf dem Element angezeigt werden sollte.(Arbeitsentwurf mit Browserkompatibilität[15] seit 2022)

WDfocus-visible-pseudoPseudoklasse :focus-visible
:lang()Elemente, deren Sprache über das Attribut „lang“ festgelegt wurdeCSS2language pseudo-classPseudoklasse :lang()
:targetdas Element, das Ziel des gerade eben angeklickten Verweises istCSS3target pseudo-classPseudoklasse :target
:enabledElemente in Benutzeroberflächen, die auswählbar sindCSS3:enabled and :disabled pseudo-classesPseudoklasse :enabled
:disabledElemente in Benutzeroberflächen, die gesperrt sindCSS3Pseudoklasse :disabled
:checkedElemente von Benutzeroberflächen, die angewählt sindCSS3:checked pseudo-classPseudoklasse :checked
:not(foo)Elemente, für die „foo“ nicht zutrifftCSS3negation pseudo-classPseudoklasse :not()
strukturelle Pseudoklassen
:first-childElemente, die das erste Kind ihres Elternelementes sindCSS2:first-child pseudo-classPseudoklasse :first-child
:last-childElemente, die das letzte Kind ihres Elternelementes sindCSS3:last-child pseudo-classPseudoklasse :last-child
:nth-child(…)Elemente, die beispielsweise dasn-te Kind ihres Elternelementes sindCSS3:nth-child() pseudo-classPseudoklasse :nth-child()
:nth-last-child(…)Elemente, die beispielsweise dasnt-letzte Kind ihres Elternelementes sindCSS3:nth-last-child() pseudo-classPseudoklasse :nth-last-child()
:only-childElemente, die das einzige Kind ihres Elternelementes sindCSS3:only-child pseudo-classPseudoklasse :only-child
:first-of-typeElemente, die das erste Element dieses Typs ihres Elternelementes sindCSS3:first-of-type pseudo-classPseudoklasse :first-of-type
:last-of-typeElemente, die das letzte Element dieses Typs ihres Elternelementes sindCSS3:first-of-type pseudo-classPseudoklasse :last-of-type
:nth-of-type(…)Elemente, die dasn-te Element dieses Typs ihres Elternelementes sindCSS3:nth-of-type() pseudo-classPseudoklasse :nth-of-type()
:nth-last-of-type(…)Elemente, die dasnt-letzte Element dieses Typs ihres Elternelementes sindCSS3:nth-last-of-type() pseudo-classPseudoklasse :nth-last-of-type()
:only-of-typeElemente, die das einzige Element dieses Typs ihres Elternelementes sindCSS3:only-of-type pseudo-classPseudoklasse :only-of-type
:rootWurzelelementCSS3:root pseudo-classPseudoklasse :root
:emptyElemente, die keine Kinder habenCSS3:empty pseudo-classPseudoklasse :empty
Pseudoelemente
::first-lineerste Zeile des formatierten TextesCSS1::first-line pseudo-elementPseudoelement ::first-line
::first-lettererstes Zeichen des formatierten TextesCSS1::first-letter pseudo-elementPseudoelement ::first-letter
foo::beforeerzeugt ein Element am Anfang des Elements „foo“ (und wählt es aus)CSS2::before and ::after pseudo-elementsPseudoelement ::before
foo::aftererzeugt ein Element am Ende des Elements „foo“ (und wählt es aus)CSS2Pseudoelement ::after

Beispiel

[Bearbeiten |Quelltext bearbeiten]
Das CSS-Box-Modell

CSS-Code:

p.info{font-family:arial,sans-serif;line-height:150%;margin-left:2em;padding:1em;border:3pxsolidred;background-color:#f89;display:inline-block;}p.infospan{font-weight:bold;}p.infospan::after{content:": ";}

HTML-Code:

<pclass="info"><span>Hinweis</span>Sie haben sich erfolgreich angemeldet.</p>

Die HTML-Tags<p> und</p> definieren den dazwischen stehenden Text als einen Absatz. Diesem wird die Klasse „info“ mit ihren CSS-Darstellungsvorgaben zu Schrifttyp, Rahmen etc. zugewiesen. Von einem CSS-kompatiblen Browser wird der Absatz daher folgendermaßen dargestellt:

Textabsatz, der so formatiert ist, wie obiges CSS es vorgibt.

Hier werden die Deklarationen allenp-Elementen zugewiesen, die dasclass-Attribut mit dem Wertinfo besitzen. Ohne dasp im Selektor wären alle Elemente der Klasseinfo betroffen, ohne das.info wären allep-Elemente betroffen.span-Elemente innerhalb solcher Absätze werden in Fettschrift dargestellt; dahinter wird mit dem Pseudoelement::after ein Doppelpunkt erzeugt.

Ein wichtiges Prinzip von CSS ist die Vererbung der Eigenschaftswerte an untergeordnete Elemente und das Kombinieren verschiedener Stylesheets, wobei die letzte Eigenschaftsdeklaration für ein Element vorher getroffene Deklarationen der gleichen Eigenschaft mit anderem Wert für dieses Element überschreibt. Diese können aus verschiedenen Quellen stammen: vom Autor des Stylesheets, vomBrowser (User Agent) oder vom Benutzer. Hierbei werden zuerst die Angaben vom Browser, dann die vom Benutzer und schließlich die vom Autor umgesetzt.

Layouts mit CSS erstellen

[Bearbeiten |Quelltext bearbeiten]

In den Anfängen der Web-Entwicklung wurden komplexe Layouts häufig mithilfe des<table>-Elements umgesetzt. Dabei wird die ganze Website als Tabelle strukturiert, deren Spalten, Zeilen und Zellen den eigentlichen Inhalt enthalten. Auch können Tabellen in sich verschachtelt werden. Nachteile dieser Methode sind vor allem eine geringe Gestaltungsfreiheit und ungünstige Darstellung auf Geräten mit kleinem Display (sieheResponsive Webdesign).

Mittlerweile unterstützen alle gängigenWebbrowser ausgefeiltere Möglichkeiten und CSS-Anweisungen um weitaus kreativere Layouts umzusetzen. Im Kontext von HTML E-Mails findet diese Methode jedoch immer noch Anwendung, da unter anderemMicrosoft Outlook viele gängige CSS-Eigenschaften nicht unterstützt.[16]

Auf modernen Webseiten werden mittlerweile vor allem zwei Eigenschaften verwendet:

  • Flexbox (display: flex) erlaubt es, HTML-Elemente innerhalb eines Elements beliebig zu positionieren und nebeneinander liegende Elemente auf z. B. mobilen Geräten umzubrechen.[17]
  • Grid (display: grid) erlaubt es, HTML-Elemente in Bereiche zu unterteilen; diese Bereiche in ihrer Größe und Position zu definieren und innenliegende Elemente in diesen beliebig zu platzieren.[18]

Längeneinheiten

[Bearbeiten |Quelltext bearbeiten]

Für die Gestaltung eines Layouts müssen Komponenten zueinander geometrisch ausgerichtet werden. Als Hilfsmittel stehen in CSS Längeneinheiten zur Verfügung. Im Laufe der Entwicklung von CSS haben sich deren Interpretationen allerdings geändert, da manche an technische Realisierungen (etwa von Monitoren) oder Annahmen darüber geknüpft waren. In der aktuellen Interpretation wird wie folgt zwischenabsoluten undrelativen Längeneinheiten unterschieden:

Absolute Längeneinheiten haben Bezug zu physikalischen Längeneinheiten (wie Zentimeter und Zoll), sind aber keineswegs mit ihnen identisch, entgegen einer häufigen Irrmeinung. Man kann beispielsweise nicht mehr davon ausgehen, dass eine CSS Längenangabe von1cm einer tatsächlichen Länge von 1 cm auf dem Bildschirm entspricht. Analog motivierte Längeneinheiten sind „in“ („inch“) und „pt“ („point“). Zu den absoluten Längeneinheiten gehört aber auch „px“ („pixel“), welche wiederum nicht einem echtenBildschirmpixel entspricht, sondern nur aus historischen Gründen so heißt. Die Einheit „px“ wurde mehrfach uminterpretiert, und teilweise sind heute noch veraltete Definitionen zu finden, selbst in W3C Dokumenten[19]. Was heute zumindest festgelegt ist, sind die Beziehungen der absoluten Längeneinheiten untereinander, inklusive „px“, wobei die wichtigsten sind[20]:

1in = 2.54cm = 25.4mm = 96px = 72pt und 4px = 3pt.

Eine exakte Zuordnung dieser Längeneinheiten zu physikalischen Längen ist nicht mehr möglich, aber als Anhaltspunkt kann man sagen, dass ein durchschnittlicher Laptop-Bildschirm eine Breite von 1200 bis 1500 CSS „px“ hat, unabhängig von der echten Auflösung[21].

Relative Längeneinheiten können Bezug nehmen auf

  • die Größen übergeordneter Elemente (in Prozent, „%“),
  • die Größe des Bildschirms, und
  • die Größen der Schrift und des Schriftsatzes.

Die Einheiten „em“, „rem“, „lh“, „rlh“, „ch“, „rch“ nehmen Bezug zu Größen des Schriftsatzes:

  • 1lh entspricht der (berechneten) Zeilenhöhe des aktuellen Elements
  • 1rlh entspricht der (berechneten) Zeilenhöhe des Wurzel-Elements
  • 1em entspricht der Schrift-Blockhöhe („Schriftgröße“ = der minimal sinnvolle Zeilenabstand) des aktuellen Elements. (Zu beachten ist, dass es sich bei der „Schriftgröße“ trotz der Bezeichnungnicht um die Höhe bestimmter Glyphen handelt.)
  • 1rem entspricht der Schrift-Blockhöhe des Wurzel-Elements
  • 1ch entspricht der Breite des Zeichens der Null („0“) im aktuellen Font
  • 1rch entspricht der Breite des Zeichens der Null („0“) im Wurzel-Font

Browserkompatibilität

[Bearbeiten |Quelltext bearbeiten]

Die verschiedenen Browser unterscheiden sich stark im Umfang der unterstützten Eigenschaften und den Standarddarstellungen verschiedener HTML-Elemente.[15] Dadurch entstehen Probleme für den Entwickler, da er nicht alle Funktionen im vollen Ausmaß nutzen kann und darauf achten muss, dass sich die Website nicht zu stark unterscheidet zwischen den einzelnen Browsern. Es gibt verschiedene Möglichkeiten dieses Problem zu lösen:

  • EinReset-Stylesheet kann genutzt werden, um die verschiedenen CSS-Standardeinstellungen zurückzusetzen und danach eigene Regeln für die Elemente zu deklarieren.
  • Conditional Comments sind HTML-Kommentare, die nur vom Internet Explorer verstanden werden. Dies erleichtert die Optimierung für diesen Browser enorm, da dieser viele Funktionen und Eigenschaften nicht unterstützt.
  • Browserpräfixe werden genutzt, um Funktionen bei älteren Versionen der Browser zu verwenden. Diese wurden in den entsprechenden Versionen nur getestet und erst später als Standard implementiert. Zudem gibt es Funktionen, die nur in den einzelnen Browsern verfügbar sind.[11]

Eine weitere Methode sind CSS-Hacks.[22] Diese verwenden CSS-Syntax, um Schwächen der Browser bei der Gestaltung von Weblayouts auszunutzen.

CSS-Hacks

[Bearbeiten |Quelltext bearbeiten]

CSS-Hacks werden benutzt, um Unterschiede bei der Darstellung von Weblayouts in verschiedenen Browsern auszugleichen oder CSS-Anweisungen für bestimmte Webbrowser gesondert zuzuweisen oder auszuschließen. Der Begriff Hack bezeichnet dabei nichtstandardisierte CSS-Befehle, mit denen die Interpretationsschwäche eines Webbrowsers ausgenutzt wird, der diese Anweisungen entweder interpretiert oder ignoriert. Damit können Schwachstellen von Webbrowsern ausgeglichen werden, um möglichst in jedem Webbrowser das gleiche Ergebnis angezeigt zu bekommen.

Ein CSS-Hack kombiniert z. B. fehlerhaft angegebene Selektoren mit zusätzlichen Zeichen oder enthält Anweisungen, die bestimmte Webbrowser nicht kennen. Ein bekanntes Beispiel für einen CSS-Hack ist der sogenannte Star-HTML-Hack. Das*-Zeichen dient als Universal-Selektor und ist vor dem Selektorhtml sinnlos.

CSS-Code-Beispiel:

p{background-color:blue;}*htmlp{background-color:red;}

In diesem Fall würden zunächst alle Browser diep-Elemente mit einem blauen Hintergrund darstellen. Lediglich derInternet Explorer vor Version 7 interpretiert auch die zweite Zeile und färbt die Absätze rot, obwohl<html> kein Eltern-Element besitzt, auf das* zutreffen könnte.

Kombination mit HTML oder XHTML

[Bearbeiten |Quelltext bearbeiten]

Am häufigsten wird CSS mit HTML oder XHTML kombiniert. Dies kann an mehreren Orten geschehen, hier einige Beispiele:

Als externes Stylesheet für eine (X)HTML-Datei (link-Element)
<linkrel="stylesheet"type="text/css"href="beispiel.css"/>
Als externes Stylesheet für eine XHTML-Datei (xml-stylesheet-Verarbeitungsanweisung)
<?xml-stylesheet type="text/css" href="beispiel.css" ?>
Als internes Stylesheet in einer (X)HTML-Datei (style-Element)
<head><title>Dokument mit Formatierungen</title><styletype="text/css">body{color:purple;background-color:#d8da3d;}</style></head>
Innerhalb von (X)HTML-Tags (style-Attribut)
<spanstyle="font-size: small;">Text</span>

Die Einbindung als externes Stylesheet ist dabei die am häufigsten verwendete Methode. Sie bietet den Vorteil, dass für mehrere Dokumente, die denselben Regelsatz benutzen, das Stylesheet nur einmal heruntergeladen werden muss. Auch vermeidet man so sich wiederholenden Code. CSS selbst ermöglicht durch den@import-Befehl das Einbinden von weiteren externen Stylesheets.

<head><title>Beispiel</title><styletype="text/css">@importurl(url_des_stylesheets);</style></head>

Es gibt drei Varianten, Stylesheets mit einemlink-Element einzubinden. Sie unterscheiden sich darin, wie zwingend die Stylesheets berücksichtigt werden:

Dauerhafte Stylesheets (persistent)
<linkrel="stylesheet"type="text/css"href="beispiel.css"/>

Wenn man ein Stylesheet so einbindet, wird es auf jeden Fall verwendet.

Bevorzugte Stylesheets (preferred)
<linkrel="stylesheet"type="text/css"href="beispiel.css"title="IrgendeinTitel"/>

Sollte man diese Einbindung verwenden, wird das Stylesheet verwendet, bis der Benutzer ein anderes auswählt.

Alternative Stylesheets (alternate)
<linkrel="alternate stylesheet"type="text/css"href="beispiel.css"title="IrgendeinTitel"/>

Wird das Stylesheet so mit dem HTML-Dokument verknüpft, muss der Benutzer ausdrücklich wählen, es zu verwenden. Das wirkt sich in den meisten Browsern aus (z. B.Internet Explorer,Firefox,Opera undKonqueror). Somit wird diese Funktion von den meist benutzten Browsern implementiert. Außerdem sollte ein „alternate stylesheet“ nur in Verbindung mit einem anderen, fest eingebundenen verwendet werden, damit es auch nur eine echte Alternative ist.

Alternativ ist es auch möglich, das Stylesheet dynamisch mittelsJavaScript einzubinden, dabei kann es jedoch passieren, dass der Inhalt während des Ladevorgangs für kurze Zeit noch ohne den Stil dargestellt wird, was alsFlash of Unstyled Content störend auffallen kann.

Spezifische Stylesheets

[Bearbeiten |Quelltext bearbeiten]

Um spezifische Geräte oder Eigenschaften anzusprechen, gibt es in CSS besondere Attribute. Seit CSS2 können ausgewählte Geräte angesprochen werden mit medienspezifischen Stylesheets und seit CSS3 nur Geräte mit bestimmten Eigenschaften, beispielsweise der Bildschirmbreite, mit eigenschaftsspezifischen Stylesheets (Media Queries). Media Queries sind vor allem fürresponsives Webdesign wichtig.

Medienspezifische Stylesheets

[Bearbeiten |Quelltext bearbeiten]

Es ist möglich, verschiedene Stylesheets für verschiedene Medien einzubinden, um zum Beispiel die Gestaltung beim Drucken oder auf Handy-Displays zu regulieren. Diesen Zweck erfüllt das Attributmedia. In diesem Attribut werden die Parameter notiert, die für dieses Stylesheet gelten sollen.

ParameterBedeutung
allStylesheet gilt für alleAusgabegeräte
speech (CSS2:aural)auraleAusgabegeräte (z. B.Screenreader)
brailleBlindenschriftfähigeAusgabegeräte
embossedBlindenschriftfähigeDrucker
handheldHandhelds (Palmtops,PDAs,WinCE-Geräte)
printDrucker
projectionVideo-Beamer,Overhead-Projektoren
screenBildschirme
ttyAusgabegeräte mit feststehenden Zeichentypen (z. B.Fernschreiber,Terminals oder auch ältereMobiltelefone)
tvTV-Geräte
Beispiel für einen@media-Befehl innerhalb einer CSS-Datei
@mediaprint{body{color:black;background-color:white;}h1{font-size:14pt;}.navigation{display:none;}}

Durch mehrere@media-Befehle lassen sich innerhalb einer CSS-Datei oder eines<style>-Blocks verschiedene Ausgabegeräte ansprechen.

Beispiel für einmedia-Attribut beim Einbinden einer CSS-Datei
<linkrel="stylesheet"type="text/css"href="beispiel.css"media="print"/>
Beispiel für einmedia-Attribut eines<style>-Blocks
<styletype="text/css"media="print">body{color:black;background-color:white;}h1{font-size:14pt;}.navigation{display:none;}</style>

Da viele moderne Smartphones den Typhandheld nicht unterstützen und stattdessen die Stilvorgaben vonscreen nutzen, ist man hier auf „Eigenschaftsspezifische Stylesheets“(Media Queries) angewiesen.

Eigenschaftsspezifische Stylesheets (Media Queries)

[Bearbeiten |Quelltext bearbeiten]

Bei Media Queries handelt es sich um ein Konzept, welches mit CSS3 eingeführt wurde und das Prinzip des Medientyps in CSS2 erweitert. Anstatt starr zu definieren, welches Medium das Zielmedium ist, können mit Media Queries die Eigenschaften des aktuellen Gerätes direkt abgefragt werden. Verfügbare Geräteeigenschaften sind zum Beispiel:

  • Breite und Höhe des Browserfensters
  • Breite und Höhe des Gerätes
  • Orientierung (Quer- oder Hochformat)
  • Bildschirmauflösung

Vor allem im Bereich der mobilen Webprogrammierung werden Media Queries bereits jetzt häufig eingesetzt, um die Webseite ideal an das aktuell verwendete Gerät anzupassen.

Im folgenden Beispiel werden Elemente mitCSS-Anweisungen versehen. Diese Anweisungen gelten für das gesamte Dokument. Anschließend wird eine Media Query eingesetzt, die greift, sobald die Breite des Browserfensters kleiner als 1025 Pixel ist. In diesem Fall ändern sich die Eigenschaften, die vorher allgemein definiert wurden, bzw. es gelten zusätzliche Eigenschaften.

#inhalt{width:800px;}@mediascreenand(max-width:1024px){#inhalt{width:600px;}aside{display:none;}}

Sicherheitsrisiken durch CSS

[Bearbeiten |Quelltext bearbeiten]

Es ist möglich, CSS auch ohne zusätzliche Verwendung von JavaScript oder anderenSkriptsprachen zumTracken von Nutzern[23] oder zum Abfangen von Daten, die inWebformulare eingetragen werden[24] (beispielsweise Passwörter), zu verwenden.Software-Keylogger, die nur aus CSS-Anweisungen bestehen, sind mit wenigen Zeilen Code realisierbar[25].

Siehe auch

[Bearbeiten |Quelltext bearbeiten]

Literatur

[Bearbeiten |Quelltext bearbeiten]
  • Ingo Chao, Corina Rudel:Fortgeschrittene CSS-Techniken. 3. Auflage. Galileo Computing, Bonn 2012,ISBN 978-3-8362-1695-1 (Detailreiche und anspruchsvolle Erklärung von CSS-Interna). 
  • Florence Maurice:CSS3: Die neuen Features für fortgeschrittene Webdesigner. 2. Auflage. dpunkt.verlag, Heidelberg 2013,ISBN 978-3-86490-118-8 (Neuerungen in CSS3). 

Weblinks

[Bearbeiten |Quelltext bearbeiten]
Weitere Inhalte in den
Schwesterprojekten der Wikipedia:

Commons– Medieninhalte (Kategorie)
Wikiversity– Kursmaterialien
Wikibooks– Lehr- und Sachbücher
Wikidata– Wissensdatenbank

Einzelnachweise

[Bearbeiten |Quelltext bearbeiten]
  1. David Flanagan:JavaScript. Das umfassende Referenzwerk. 6. Auflage. O’Reilly, Köln 2012,ISBN 3-86899-135-2,S. 1 (englisch:JavaScript. The definitive guide. Übersetzt von Lars Schulten, Thomas Demmig). 

    “JavaScript is part of the triad of technologies that all Web developers must learn: HTML to specify the content of web pages, CSS to specify the presentation of web pages, and JavaScript to specify the behaviour of web pages.”

  2. HTML 4.0 Specification, W3C Recommendation. Appendix A: Changes between HTML 3.2 and HTML 4.0, A.1.2 Deprecated elements. W3C, 18. Dezember 1997, abgerufen am 15. November 2014 (englisch). 
  3. HTML5 Differences from HTML4, W3C Working Draft. 3.5 Obsolete Elements. W3C, 18. September 2014, abgerufen am 15. November 2014 (englisch). 
  4. Håkon Wium Lie: Cascading HTML style sheets -- a proposal. 10. Oktober 1994, abgerufen am 13. Oktober 2014 (englisch). 
  5. Håkon Wium Lie: Cascading Style Sheets. Universität Oslo, 2005, archiviert vom Original (nicht mehr online verfügbar) am 4. Oktober 2014; abgerufen am 13. Oktober 2014 (englisch, Doktorarbeit von H. W. Lie). 
  6. Cascading Style Sheets, level 2 revision 1. W3C Working Draft 2 August 2002. W3C, 2. August 2002, abgerufen am 6. Oktober 2014 (englisch). 
  7. Cascading Style Sheets Level 2 Revision 1 (CSS 2.1) Specification. W3C Recommendation 07 June 2011. W3C, 7. Juni 2011, abgerufen am 6. Oktober 2014 (englisch). 
  8. Cascading Style Sheets, level 2 revision 2 (CSS 2.2) Specification. W3C First Public Working Draft 12 April 2016. W3C, 12. April 2016, abgerufen am 1. Juli 2016 (englisch). 
  9. CSS3 introduction W3C Working Draft, 14. April 2000. In: w3.org. W3C, abgerufen am 8. Juli 2010 (englisch). 
  10. abCSS current work & how to participate. CSS specifications. W3C, 25. September 2014, abgerufen am 6. Oktober 2014 (englisch). 
  11. abCan I use... Support tables for HTML5, CSS3, etc. Abgerufen am 14. Juni 2020. 
  12. Nicolai Schwarz: CSS4: So sieht die Zukunft des Webstandards aus. In: t3n. 5. September 2012, abgerufen am 21. November 2012. 
  13. abTob Atkins: A Word About CSS4. 5. September 2012, abgerufen am 8. September 2014 (englisch). 
  14. The W3C CSS Validation Service. Abgerufen am 14. Juni 2020 (englisch). 
  15. abBrowserkompatibilität: Probleme mit der Darstellung von Webseiten in verschiedenen Browsern | Tipps zur Web-Usability. Abgerufen am 14. Juni 2020. 
  16. Can I email… Abgerufen am 9. Dezember 2022 (englisch). 
  17. CSS/Tutorials/Flexbox/Flex-Container. In: SELFHTML-Wiki. Abgerufen am 22. Juni 2020. 
  18. CSS Grid Layout. Abgerufen am 22. Juni 2020. 
  19. CSS: em, px, pt, cm, in… Abgerufen am 17. Mai 2024. 
  20. CSS values and units - Learn web development | MDN. 3. April 2024, abgerufen am 17. Mai 2024 (amerikanisches Englisch). 
  21. There Is No Such Thing As A CSS Absolute Unit. 29. Juli 2021, abgerufen am 17. Mai 2024 (englisch). 
  22. Hugo Giraudel, Tim Pietrusky, Fabrice Weinberg: Browserhacks. Abgerufen am 14. Juni 2020 (englisch). 
  23. Jan Böhmer: Crooked Style Sheets. In: Proof of concept for website tracking/analytics using only CSS and without JavaScript. 29. Juli 2020, abgerufen am 28. Januar 2022. 
  24. Stealing Data With CSS: Attack and Defense. 6. Februar 2018, abgerufen am 28. Januar 2022. 
  25. Max Chehab: CSS Keylogger. 21. Februar 2018, abgerufen am 28. Januar 2022. 
Normdaten (Sachbegriff):GND:4467617-7 (GND Explorer,lobid,OGND,AKS)
Standards desWorld Wide Web Consortiums (W3C)
VD
Empfehlungen

ActivityPub |ARIA |Canonical XML |CDF |CSS |DOM |Geolocation API |HTML |HTML5 |InkML |ITS |JSON-LD |MathML |OWL |P3P |PLS |PNG |RDF |RDF-Schema |RIF |SCXML |SISR |SKOS |SMIL |SOAP |SRGS |SSML |SVG |SPARQL |Timed Text |Turtle |VoiceXML |WSDL |XForms |XHTML |XHTML+RDFa |XInclude |XLink |XML |XML Base |XML-Encryption |XML Events |XML Information Set |XML Namespace |XML Schema |XML Signature |XPath |XPointer |XProc |XQuery |XSL |XSL-FO |XSLT(Elemente)

Arbeitsentwürfe
und Kandidaten

CCXML |CURIE |SMIL Timesheets |sXBL |WICD |XFrames |XBL | XHTML+MathML+SVG |XMLHttpRequest

Anmerkungen

XAdES |XFDL |XHTML+SMIL |XUP

Richtlinien

Web Content Accessibility Guidelines |Multimodal Interaction Activity |Markup Validation Service

Initiativen

Web Accessibility Initiative

Abgerufen von „https://de.wikipedia.org/w/index.php?title=Cascading_Style_Sheets&oldid=264298207
Kategorien:

[8]ページ先頭

©2009-2026 Movatter.jp