Cascading Style Sheets CSS Einführung und Grundkonzepte Christof Lutz, 2005 Was sind Stylesheets? Stylesheets… • wurden als Ergänzung zu HTML entwickelt. • stellen eine Sprache zur Formatierung einzelner HTML-Elemente dar. • wurden aus der Idee geboren – Inhalt und Design bei Webseiten voneinander zu trennen. • bieten die Möglichkeit Formatangaben zentral zu definieren womit der Stil im gesamten HTMLDokument einheitlich wird. • werden, wie HTML, vom W3C verwaltet und weiterentwickelt Christof Lutz, 2005 Was sind Stylesheets? • Vorteile gegenüber herkömmlichem HTML: – Vergrößerte Gestaltungsvielfalt – Trennung von Inhalt und Layout möglich – Zentrale Definition von Stilen schneller Veränderbar – Keine „Tricks“ mit Tabellenlayouts mehr nötig – „Suchmaschinenfreundlicher“ Christof Lutz, 2005 Was sind Stylesheets? • Neben den Cascading Style Sheets (CSS), die für HTML entwickelt wurden existieren noch weitere Stylesheetsprachen: – die „Document Style Semantics and Specification Language" (DSSSL), wurde für SGML konzipiert – "Extensible Stylesheet Language" (XSL), ist eine Entwicklung für XML Christof Lutz, 2005 Historie • CSS 1.0 existiert seit 1996 (1999 nochmals überarbeitet) – beinhaltete schon die meisten heute geläufigen Styleangaben • CSS 2.0 seit 1998 – weitere Elemente hinzugefügt und vorhandene um zusätzliche Eigenschaften erweitert • CSS 2.1 und CSS 3.0 sind derzeit in Bearbeitung Christof Lutz, 2005 Syntax von CSS • Allgemein wird eine CSS-Eigenschaft nach folgendem Muster deklariert: Selektor { Eigenschaft:Wert;} • Der Selektor gibt an, welchem HTML-Tag die Formatierung zugewiesen wird • Die Eigenschaft bestimmt, was im Tag geändert werden soll • Der Wert gibt an, auf welchen Wert die Eigenschaft geändert wird Christof Lutz, 2005 CSS in ein Dokument einbinden Es gibt 3 Möglichkeiten ein Stylesheet in HTML einzubinden: 1. Innerhalb eines HTML-Elements 2. Zentral am Anfang einer HTML-Datei 3. In einer externen CSS-Datei Christof Lutz, 2005 Einbinden innerhalb eines Tags Wenn einzelne HTML-Elemente eine spezielle Formatierung erlangen sollen kann die StyleAngabe direkt im Tag angegeben werden: <tag style="[element-spezifische Formate]">...</tag> Beispiel: <h1 style="font-family:'Century Schoolbook',serif; font-size:4em; ">Titel</h1> Christof Lutz, 2005 Einbinden am Anfang der Datei Um zentrale Formate innerhalb einer HTMLDatei zu definieren kann das Stylesheet am Anfang dieser Datei definiert werden: Syntax: Beispiel: <html> <head> … <style type="text/css"> [Stildefinitonen] </style> </head> <html> <head> <style type="text/css"> <!-h1 { color:red; font-size:48px; } p { font-size:110%; } //--> </style> </head> Christof Lutz, 2005 Externe CSS-Dateien Externe CSS-Dateien bieten den Vorteil, dass mehrere HTML-Dateien mit gleichen Stilvorlagen definiert werden können: Es wird eine Datei mit der Endung .css erstellt, in der die Styles definiert werden. Im HTML Dokument wird die CSS-Datei über ein Link-Tag eingebunden. abc.css: HTML-Datei: h1 { font-size:26px; margin-bottom:18px; } ul { color:blue; } p,div { font-size:13px; } … <html> <head> … <link rel="stylesheet" type="text/css“ href=“abc.css"> </head> Christof Lutz, 2005 Unterschiedliche Medien Eine weitere Stärke von CSS ist die Möglichkeit verschiedene Stildefinitionen für unterschiedliche Ausgabemedien festzulegen. Somit kann eine HTMLDatei für z.B. PC-Bildschirm, PDA, Drucker und andere Medien verwendet werden. Dazu werden verschieden CSS-Dateien eingebunden: <html> <head> <link rel="stylesheet" media="screen" href="website.css"> <link rel="stylesheet" media="print, embossed" href="druck.css"> <link rel="stylesheet" media="aural" href="speaker.css"> </head> … Christof Lutz, 2005 Klassen In CSS können Klassen definiert werden. Dadurch kann ein HTMLElement mit verschiedenen Eigenschaften belegt werden: <style type="text/css" > <!-h1 { font-family:Arial,sans-serif; font-size:2em;} h1.hinterlegt { background-color:#FFFF00;} .extra { background-color:#FF99FF; } //--> </style> … <body> <h1>H1 ohne Klasse</h1> <h1 class="hinterlegt">H1 mit Klasse hinterlegt</h1> <h2 class="extra">H2 mit Klasse extra</h1> … Christof Lutz, 2005 Die Elemente „div“ und „span“ • In HTML gibt es 2 Tags, welche keine eigene Formatierungseigenschaft besitzen. Die Elemente „div und „span“. • Sie dienen dazu Bereiche zu definieren, die per CSS-Klassen mit Eigenschaften gefüllt werden. • Das „div“-Element bildet einen Block, während „span“ als Inline-Element benutzt wird. Christof Lutz, 2005 Die Elemente „div“ und „span“ Beispiel: <style type="text/css"> <!-.p { font-family:Arial,sans-serif; font-size:105%; color:black; margin-top:6px; marginbottom:6px; } .red { color:red; } .bold { font-weight:bold; } .big { font-size:140%; } // --> </style> … <body> <div class="p"> Hier wird ein Block gestaltet <span class="red"> mit roten Inline-Element </span></div> <div class="bold"> Ein weiterer Block <span class="big"> mit zusätzlicher Größe</span> und wieder kleiner …</div> … Christof Lutz, 2005 Individualformate • So wie Formate für Klassen definieren können, mit dem Universalattribut class angesprochen werden, können auch Formate definiert werden, die über das Universalattribut id angesprochen werden. • Der Bezeichner für ein id-Attribut sollte ein dokumentweit eindeutiger Name sein, da es sich um eine zentrale Formatdefinition handelt . • In CSS werden die id-Namen allerdings nicht nur wie beispielsweise in JavaScript als dokumentweit eindeutige Bezeichner betrachtet, sondern auch als elementtypweit eindeutige Bezeichner. Christof Lutz, 2005 Individualformate • Id-Attribute werden in der Style-Definition mit # und einem Namen erstellt. In der HTML-Datei wird das id-Attribut mit id=„idname“ aufgerufen: <style type="text/css"> #roterBereich { position:absolute; top:130px; left:30px; width:320px; border:4px solid #EE0000; } </style> … <body> <div id="roterBereich">Der rote Bereich</div> Christof Lutz, 2005 Kaskadierung • Wird in einem HTML-Dokument kein Stylesheet definiert, so bestimmt der Browser die Darstellung der Elemente. Der Browser liefert ein „eigenes“ Stylesheet (Browser-Stylesheet). • Aber auch der Benutzer des Browsers kann über die Browsereinstellung oder Zusatzprogramme festlegen, wie ein Dokument angezeigt werden soll (Benutzer-Stylesheet). • Erst wenn im Programmcode ein Stil explizit festgelegt wird werden die „voreingestellten“ Styles überschrieben. Christof Lutz, 2005 Kaskadierung • Selbst innerhalb einer Styledefinition können widersprüchliche Anweisungen definiert sein. • Der Browser folgt darum festgelegten Regeln, welche Anweisung befolgt werden soll. • Diese Regeln sollten bekannt sein und beachtet werden, damit auch das gewünschte Ergebnis erscheint • Auch kann aus dieser Eigenart ein Nutzen gezogen werden – in dem gezielt einzelne Anweisungen überschrieben werden. Christof Lutz, 2005 Kaskadierung • Existieren verschiedene Style-Angaben für ein Element wird die nach „Ursprung und Priorität“ ermittelt, welche Angabe verwendet wird. Reihenfolge in absteigender Wichtigkeit: Benutzer-Stylesheet mit !important* Autoren-Stylesheet mit !important* Autoren-Stylesheet Benutzer-Stylesheet Browser-Stylesheet *!important: Selektor { Eigenschaft:Wert !important; } Christof Lutz, 2005 Kaskadierung • weitere Regeln: – #id-Elemente vor – Klassen vor – Elementen – Direktformatierung vor – Stildefinition im Header vor – Stildefinition aus CSS-Datei – zuletzt definierte Angabe überschreibt vorherige Angaben Christof Lutz, 2005 Kaskadierung Beispiele: CSS-Datei: h1 {color:red; font-size:48px;} HTML-Datei: <style type="text/css"> h1 {color:blue; font-size:24px;} </style> … <body> <h1 style="color:green; font-size:36px; ">Titel</h1> Hier wird der Titel in grün mit 36 Pixel ausgegeben Christof Lutz, 2005 Kaskadierung Beispiele (2): <style type="text/css"> a { color:blue; text-decoration:underline; } .xy { color:green; text-decoration:line-through; } li a { color:red; text-decoration:none; } </style> … <body> <ul> <li>Listenpunkt: <a class="xy" href="ziel.htm"> Verweis</a> </li> Die Klasse hat vor den anderen Eigenschaften Vorrang der Verweis wird grün und durchgestrichen. Christof Lutz, 2005 Quellen: • http://www.selfhtml.org • Daniel G. Shafer & Kevin Yank, Cascading Stylesheets, dpunkt-Verlag, 1.Aufl. • Kai Laborenz, CSS-Praxis, Galileo Press, 2.Aufl. • HTML-World eBook, CSS, http://www.html-world.de Christof Lutz, 2005