Literatur

Werbung
Literatur
[4-1]
Meyer, Eric: CSS kurz&gut. O'Reilly, 4. Auflage, 2011
[4-2]
Laborenz, Kai: CSS-Praxis. Galileo Computing, 2003
[4-3]
Münz, Stefan: <Professionelle Websites>. Addison-Wesley, 2005
[4-4]
Lubkowitz, Mark: Webseiten programmieren und gestalten. Galileo
Computing, 2003
[4-5]
Seibert, Björn; Hoffmann, Manuela: Professionelles Webdesign mit
(X)HTML und CSS. 2. Auflage, Galileo Computing, 2008
[4-6] http://de.wikipedia.org/wiki/Cascading_Style_Sheets
[4-7] http://www.edition-w3.de/TR/1998/REC-CSS2-19980512/
[4-8] http://caniuse.com/
[4-9] http://de.wikipedia.org/wiki/Sass_(Stylesheet-Sprache)
[4-10] http://de.wikipedia.org/wiki/LESS_(Stylesheet-Sprache)
[4-11] http://de.wikipedia.org/wiki/Stylus_(Stylesheet-Sprache)
Webtechnologien – WS 2017/18 - Teil 4/CSS I
2
Überblick
•
•
•
•
Grundlagen
Selektoren
Klassen und Unterklassen
Vererbung und Prioritäten
Webtechnologien – WS 2017/18 - Teil 4/CSS I
3
Cascading Style Sheets
• Cascading Style Sheets (CSS) = Sprache zum Definieren des
Layouts von Auszeichnungen
• Mit CSS wird die Präsentation von Auszeichnungen festgelegt.
• Das Ziel von CSS besteht in der Möglichkeit Layout-Attribute von
Tags an einer zentralen Stelle, aber auch direkt bei den
betreffenden Tags zu setzen.
Webtechnologien – WS 2017/18 - Teil 4/CSS I
4
Geschichte I
Version
Erscheinung
Erläuterungen
CSS Level 1
1996
Umfang: ca. 76 Seiten
Themen: Textgestaltung und Farben
http://www.w3.org/TR/CSS1/
CSS Level 2
1998
Umfang: ca. 340 Seiten
Themen: Erweiterung von CSS1,
Ausrichtung auf Medien
http://www.w3.org/TR/CSS2/
CSS Level 2.1
2011
Aktuelle Version
CSS Level 3
Webtechnologien – WS 2017/18 - Teil 4/CSS I
nicht vollständig implementiert
http://www.w3.org/TR/selectors/
5
Prüfprogramme und weitere Informationen
• Kompatibilitätslisten:
http://www.css4you.de/browsercomp.html
http://www.webstandards.org
http://www.quirksmode.org
• Prüfprogramme:
http://htmlhelp.com/tools/csscheck/
http://htmlhelp.com/tools/csscheck/upload.html
http://jigsaw.w3.org/css-validator/
• Vertiefung:
http://csszengarden.com
http://www.mezzoblue.com/css/cribsheet
Webtechnologien – WS 2017/18 - Teil 4/CSS I
7
Gruppen von Tags bzw. Elementen
• Block-Elemente (block level elements):
Der Text beginnt immer in einer neuen Zeile.
Diese Elemente werden in Rechtecken (Boxen) präsentiert.
Beispiele: h1..h6, p, div, ul, ol
• Eingebundene Elemente (inline elements):
Elemente sind Teile von Text bzw. Blöcken; sie werden in der
angegebenen Reihenfolge hintereinander gesetzt.
Beispiele: a, span, br, img
• Listenelemente
Dies sind Blockelemente mit damit verbundenen weiteren
Bereichen (der Spiegelpunkt oder die Nummer)
Hier gibt es nur ein Tag: li
• Element =
– Aus HTML-Sicht: Tag mit seinen Eigenschaften
– Aus Präsentationssicht: Ein Bereich des dargestellten Dokuments
Webtechnologien – WS 2017/18 - Teil 4/CSS I
8
Syntax I
Selector { Attribut: Wert; ... }
Deklaration
Als Selektoren können Tagnamen, Identifier oder Ausdrücke
verwendet werden.
Den selektierten Elementen werden die angegebenen Attribute
zugeordnet. Es sind mit Semikola aufgebaute Listen von Attributen
zulässig.
Bei Angaben direkt am Tag:
<Tag style=" Attribut : Wert ; ..." ...>
Deklaration
Webtechnologien – WS 2017/18 - Teil 4/CSS I
Nicht gut!
Besser in extra
Datei oder wie oben
9
Syntax III - Benutzung
<head>
<title>...</title>
...
<style type="text/css">
... Definitionen ...
</style>
</head>
<body>
<Tag style=“...“ >
...
</Tag>
</body>
</html>
Zu empfehlende
Stelle der Definitionen
Für Tag muss etwas
eingesetzt werden.
Webtechnologien – WS 2017/18 - Teil 4/CSS I
11
Element-Selektoren
Tag { Att1: Val1; Att2: Val2; ... }
Tag1, Tag2, Tag3, ... { Att1: Val1; Att2: Val2; ... }
Die Liste der Attribute Attx:Valx wird dem einzelnen Tag oder der
Liste der Tags Tag1, Tag2, Tag3, ... zugeordnet.
Beispiele:
h1 {color: black;}
h2 {color: black;}
h3 {color: black;}
h1, h2, h3 {color: black;}
Webtechnologien – WS 2017/18 - Teil 4/CSS I
12
Kontextabhängige Selektoren I
Tag1 Tag2 { Att1: Val1; Att2: Val2; ... }
Im Bereich des Wirkens (Kontext) von Tag1 erhält Tag2 die angegebenen
Attribute.
Tag1 Tag2 Tag3 { Att1: Val1; Att2: Val2; ... }
Im Bereich des Kontext von Tag1 geschachtelt mit Tag2 erhält Tag3 die
angegebenen Attribute.
Tag1 Tag2 Tag3 ... { Att1: Val1; Att2: Val2; ... }
Verallgemeinerung auf beliebig tief geschachtelte Kontexte
Der Kontext ist die direkte oder indirekte Schachtelung im Sinne eines
Umfassens von verschiedenen Bereichen.
Webtechnologien – WS 2017/18 - Teil 4/CSS I
13
Kontextabhängige Selektoren II - Beispiele
h1 {color: black;}
i {color: red;}
bedeutet, dass die Schriftfarbe jeder h1-Überschrift schwarz ist und
dass alle kursiven Auszeichnungen rot sind,
h1 i {color: blue;}
bedeutet, dass die kursiven Teile innerhalb einer h1-Überschrift blau sind.
li a {color: grey;}
bedeutet, dass die Links innerhalb einer Liste grau sind.
ol li a {color: green;}
bedeutet, dass die Links innerhalb einer nummerierten Liste grün sind.
Webtechnologien – WS 2017/18 - Teil 4/CSS I
14
Beispiel
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
h1 i {color: blue;}
li a {color: grey;}
ol li a {color: green;}
</style>
</head>
<body>
<h1>Das ist eine <i>gute</i>Überschrift</h1>
<ul>
<li><a href="www.google.de">google</a></li>
</ul>
<ol>
<li><a href="www.google.de">google</a></li>
</ol>
</body>
Keine gute
Konstruktion,
besser mit <span>
Webtechnologien – WS 2017/18 - Teil 4/CSS I
15
Klassen I
• Jedes Tag wird als Menge von veränderbaren Attributen
aufgefasst.
• Klasse = Menge der veränderbaren Attribute
• Neue Klassen werden dadurch gebildet, dass von einer
bestehenden Klasse (Tag) die Attribute übernommen (vererbt)
werden, bis auf die, die neue Werte erhalten.
• Vererbung = Übernahme und Ersetzen von Attributen
• Aber: Nicht alle Attribute werden vererbt(!)
p {color: red;}
Die Attribute von <p> werden übernommen und gleichzeitig das Attribut
der Schriftfarbe auf rot gesetzt. Das sind dann die Attribute des neuen <p>.
Webtechnologien – WS 2017/18 - Teil 4/CSS I
16
Klassen II
• Pseudo-Klasse = Klasse, die nur unter bestimmten Bedingungen
zur Laufzeit (Zustand) angewendet wird oder die sich auf einen
Block von Informationen bezieht
Beispiel: Anker-Pseudo-Klasse
a:link {color: red;}
Einem A-Tag können damit abhängig vom Zustand (link, visited
etc.) unterschiedliche Attribute zugeordnet werden.
Dieses Beispiel bezieht sich auf den Zustand.
• Die Pseudo-Klasse, die in der Praxis am häufigsten benutzt wird,
sind die Pseudoklassen für Interaktionen,
:link, :active etc. sind Beispiele dafür.
Webtechnologien – WS 2017/18 - Teil 4/CSS I
17
Beispiele für Pseudoklassen/Elemente
Interaktion
Absätze
Sprache
Neuer Inhalt
:link
:first-line
:lang
:before
:visited
:first-letter
:after
:focus
:hover
:active
• Die grau hinterlegten Pseudoklassen werden später beschrieben.
• Pseudo-Elemente sind fett dargestellt, während PseudoKlasse in normaler Schrift.
Webtechnologien – WS 2017/18 - Teil 4/CSS I
19
Klassen-Selektoren I
Es können auch eigene Klassen definiert werden, die aber
nur als Attribute und nicht als eigenständige Tags innerhalb
von <...> verwendet werden:
.Klasse { Att1: Val1; Att2: Val2; ... }
Klassendefinitionen beginnen immer mit einem Punkt und definieren
den Bezeichner Klasse mit seinen Attributen.
Beispiel:
.Strong {color: red; font-weight: bold; }
...
<p class="Strong"> ... Text ... </p>
Nur mit dem Attribut class lassen sich diese Klassen benutzen.
Webtechnologien – WS 2017/18 - Teil 4/CSS I
20
Klassen-Selektoren II - Unterklassen
Basierend auf einer Klasse lassen sich Unterklassen definieren,
wobei die Attribute der Oberklasse vererbt sowie die angegebenen
Attribute gesetzt werden. Dies geht nur einstufig.
Tag.Klasse { Att1: Val1; Att2: Val2; ... }
Unterklassendefinitionen beginnen mit einem Tag gefolgt von einem
Punkt und definieren den Namen Klasse mit den Attributen.
Beispiel:
p.definition {color: blue; font-weight: bold; }
...
<p class="definition"> ... Text ... </p>
Mit dem Attribut class lassen sich die Unterklassen benutzen.
Webtechnologien – WS 2017/18 - Teil 4/CSS I
21
Klassen-Selektoren III – Mehrere Klassen
Layer-Definition:
CSS-Definitionen:
<div class="navigation important">
...
</div>
.navigation {
border : 1px;
color : brown;
}
.important {
font-weight : bold;
}
Es können auch mehrere Klassen gleichzeitig benutzt werden.
Diese werden mit Blank getrennt hintereinander aufgeführt.
Webtechnologien – WS 2017/18 - Teil 4/CSS I
22
ID-Selektoren II - Beispiel
Layer-Definition:
CSS-Definition:
<div id="navigation">
...
</div>
#navigation {
color : brown;
}
<body>
<div id="navigation">Das ist die Navigation<br>
über 2 Zeilen
</div>
</body>
Webtechnologien – WS 2017/18 - Teil 4/CSS I
24
Merkregel
• Klassen dienen der globalen Festlegung des Layouts an
mehreren Stellen.
• Identifier (id) dienen dazu, das Layout an einer einzigen Stelle
gezielt zu definieren (bei <div> üblich).
• Merkregel:
Wenn Layout-Attribute mehrfach verwendet werden oder wenn
sie systematisch für die Seite bzw. Site sind, dann verwende
Klassen bzw. Unterklassen.
Wenn Layout-Attribute sich auf einen einzigen, bestimmten
Bereich beziehen, dann verwende Identifier (IDs).
Webtechnologien – WS 2017/18 - Teil 4/CSS I
25
<div> und <span>
• <div> ... </div> definiert ein Rechteck innerhalb der Seite und
ist daher ein Blockelement.
• <span> ... </span> definiert einen Teilbereich innerhalb eines
Texts und ist daher ein Inline-Element.
• Alle Attribute an <div> und <span> werden in den
eingeklammerten Bereich hinein vererbt.
• Ohne Attribute haben <div> und <span> keine Bedeutung,
außer dass sie einen eigenen geschachtelten Teilbaum bilden.
• Daher sollten <div>/<span>-Bereiche mit folgenden
Konstrukten verwendet werden:
<div id="Name"
> … </div>
<div class="Name"> … </div>
Text… <span style="CSS-Sachen"> Text… </span> Text…
Webtechnologien – WS 2017/18 - Teil 4/CSS I
26
Selektoren in der Schachtelung
• Analog zu dem Kontext-Selektor lassen sich Attribute
definieren, die in bei einer bestimmten Schachtelung gelten
sollen.
• Für den Operator > gilt: Es werden alle Tags Tag2 ausgewählt,
die direkt von Tag1 erben bzw. ein direktes Kind von Tag1
sind.
Tag1 > Tag2 { Att1: Val1; Att2: Val2; ... }
Die Attributliste gilt für Tag2 nur dann, wenn es ein direktes
Kind in der Benutzung von Tag1 ist, aber kein Enkel etc.
Webtechnologien – WS 2017/18 - Teil 4/CSS I
27
Beispiel I
body p { color: black; }
body>p { color: blue; }
...
<body>
<p>Dies ist der erste Absatz. Er ist ein Kind von body.</p>
<div>
<p>Dieser Absatz ein Kind von div</p>
</div>
<p>Dieser Absatz ist wieder ein direktes Kind von body.</p>
Ergibt
Die direkten Kinder haben eine blaue
Schriftfarbe, das Kind von
div (ein indirektes Kind von body)
hat eine schwarze Schriftfarbe.
Webtechnologien – WS 2017/18 - Teil 4/CSS I
28
Beispiel II - Visualisierung des Baums
Erstellt mit
http://bioub.github.io/d3.DOMVisualizer/
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
<style>
body p { color: black; }
body > p { color: blue; }
</style>
</head>
<body>
<p>Dies ist der erste Absatz. Er ist ein Kind von body.</p>
<div>
<p>Dieser Absatz ein Kind von div</p>
</div>
<p>Dieser Absatz ist wieder ein direktes Kind von body.</p>
</body>
</html>
Die vielen Text-Knoten entstehen
durch das Einrücken und durch
die Zeilenenden.
Webtechnologien – WS 2017/18 - Teil 4/CSS I
29
Zwei Vererbungshierarchien I
Es gibt zwei Vererbungshierarchien zur Bestimmung der Attribute:
1. Vererbung bei der Definition
Diese erfolgt durch Angabe der Vererbung in der Definition
Beispiel: p.definition {....}
2. Vererbung durch Schachtelung
Durch Schachtelung der Wirkungsbereiche werden Attribute vererbt.
Das Layout an einer Stelle wird durch die an dieser Stelle gültigen Attribute
Bestimmt. Dabei werden beide Hierarchien beachtet.
Webtechnologien – WS 2017/18 - Teil 4/CSS I
30
Zwei Vererbungshierarchien II
html
Jedes HTML-Dokument wird intern als
Baum realisiert. Dieser Baum spiegelt die
geschachtelte Benutzung der Tags wieder.
head
Dies hier ist der verkürzte Baum des letzten
Beispiels.
body
p
div
p
p
Vererbt wird immer von der Wurzel in die
Blätter.
Webtechnologien – WS 2017/18 - Teil 4/CSS I
31
Folge-Element-Selektoren (Nachbar-Selektion)
Wenn direkt benachbarte Geschwister-Elemente behandelt werden
sollen, ist der Folge-Element-Selektor + nötig:
Tag1 + Tag2 { Att1: Val1; Att2: Val2; ... }
Die Attributliste gilt für Tag2 nur dann, wenn es ein SchwesterElement in der Benutzung von Tag1 ist und lexikalisch direkt als
nächstes hinter Tag1 vorkommt.
Beispiel:
h1 + p {margin-left: -10px;}
Der Absatz unmittelbar hinter der Überschrift h1 wird um 10 Pixel nach
links eingerückt.
li + li {color: red;}
Das 2., 3. etc. Element einer Liste ist rot.
Webtechnologien – WS 2017/18 - Teil 4/CSS I
32
Beispiel
<h1> Das ist eine weitere Überschrift </h1>
<p>Hier beginnt der Text des 1.Absatzes
<p>und hier des zweiten Absatzes
<ul>
<li><a href="www.google.de">google</a></li>
<li><a href="www.gooogle.de">gooogle</a></li>
<li><a href="www.goooogle.de">goooogle</a></li>
</ul>
<style type="text/css">
h1 + p {margin-left: -10px;}
li + li {color: red;}
</style>
Die erste Zeile ist um 10
Pixel nach links eingerückt.
Webtechnologien – WS 2017/18 - Teil 4/CSS I
33
Selektion anhand von Attributen I
Wenn etwas für alle Tags, die bestimmte Attribute haben, geändert
werden soll, dann stehen für die Auswahl u.a. folgende Selektoren
zur Verfügung, z.B.:
[Attribut]:
Selektiert alle Tags mit dem Attribut Attribut
z. B. a[href] wählt alle Links, aber keine Anker
[Attribut=Val]:
Selektiert alle Tags mit dem Attributwert Att=Val
[Attribut~=Val]:
Selektiert alle Tags mit dem Attributwert Att=Val, wobei Val
als einziges Wort im Attributwert vorkommt
[Attribut|=Val]:
Selektiert alle Tags mit dem Attributwert Att=Val, wobei Val
einen Bindestrich hat z. B. in lang="en-US"
[Attribut^=Val]:
Selektiert alle Tags mit dem Attributwert, der mit Val beginnt
Webtechnologien – WS 2017/18 - Teil 4/CSS I
34
Selektion anhand von Attributen II - Beispiel
a[href^="mailto:"]:before {content: "\2709";}
•
•
•
Bei jedem Anker (<a>-Element) wird vorher das Zeichen \2709
eingefügt, falls die href-Adresse mit "mailto:" beginnt.
Das Zeichen \2709 ist ein kleines Briefsymbol.
Die Funktionsweise wird später an einem Beispiel gezeigt.
Siehe: http://www.w3.org/TR/css3-selectors/#attribute-substrings
Webtechnologien – WS 2017/18 - Teil 4/CSS I
35
Selektion anhand von Attributen III
Für Tabellen gibt es Sonderformen:
Konstrukt
Erläuterung
table:row[Reihe]
Es werden die Attribute der Reihe mit der
Nummer Reihe zugewiesen
table:column[Spalte]
Es werden die Attribute der Spalte mit der
Nummer Spalte zugewiesen
table:row[%NR]
Die Attribute werden jeder NR-ten Reihe
zugewiesen; geht auch für Spalten
table:row[%NR+Begin]
Die Attribute werden jeder NR-ten ab der
Begin-ten Reihe zugewiesen;
gilt auch für Spalten
Webtechnologien – WS 2017/18 - Teil 4/CSS I
36
Universal-Selektor
Um einen beliebigen Kontext anzugeben, wird der Stern benutzt: "*":
Tag1 * Tag2 { Att1: Val1; Att2: Val2; ... }
Wenn zwischen Tag1 und Tag2 ein einziges beliebiges Element steht,
dann wird die Attribut-Liste auf Tag2 angewendet.
Der Stern kann auch als Platzhalter allein verwendet werden, z.B. in
"* {color: black;}". Dies bedeutet, dass die Schriftfarbe immer schwarz sein
soll.
Webtechnologien – WS 2017/18 - Teil 4/CSS I
37
Beispiel für Universal-Selektor
body p { color: blue; }
body * p {color: red; }
...
<body>
<p>Farbe: blue</p>
<div>
<p> Farbe: red </p>
</div>
<p>Farbe: blue </p>
Ergibt
Webtechnologien – WS 2017/18 - Teil 4/CSS I
38
Orte für CSS – Kopf I
• Die Style-Angaben können innerhalb des Kopfs stehen;
sie gelten dann für die gesamte Datei:
<head>
...
<style type="text/css">
... Definitionen ...
</style>
</head>
Webtechnologien – WS 2017/18 - Teil 4/CSS I
39
Orte für CSS – Kopf II
<!DOCTYPE html PUBLIC TYP>
<html ... >
<head>
<title>...</title>
<meta ....=.…/>
...
<style type="text/css">
... Definitionen ...
</style>
</head>
<body>
...
</body>
</html>
Webtechnologien – WS 2017/18 - Teil 4/CSS I
40
Orte für CSS - Externe Datei II
• Medienspezifische CSS-Definitionen werden durch das Attribut
media festgelegt.
• Beispiele:
Vorlesegeräte
<link rel="stylesheet" type="text/css" media="aural" href=“URL“>
Drucker
<link rel="stylesheet" type="text/css" media="printer" href=“URL“>
Beamer
<link rel="stylesheet" type="text/css" media="projection" href=“URL“>
Webtechnologien – WS 2017/18 - Teil 4/CSS I
42
@-Anweisungen II
• Das @media-Statement klammert Definitionen für einen Medientyp.
• Damit können CSS-Definitonen für mehrere Medien in einer Datei
zusammengefasst angegeben werden.
Beispiel:
@media print {
body { ... }
h1 { ... }
h2 { ... }
}
@media screen, handheld {
body { ... }
h1 { ... }
h2 { ... }
}
Webtechnologien – WS 2017/18 - Teil 4/CSS I
45
@-Anweisungen III
• Die Mediatypen können auch nach @import angegeben werden.
• Sie stellen dann weitere Bedingungen dar.
Beispiele:
@import url(URL1)
@import url(URL2)
Webtechnologien – WS 2017/18 - Teil 4/CSS I
print;
handheld, screen;
46
Kaskaden und Vererbung I
Priorisierung bei Stylesheets bei Widersprüchen
• Spezielle sind höherwertiger als allgemeine Definitionen.
• Weiter hinten definierte Festlegungen derselben Priorität sind
höherwertiger als früher definierte.
• Mit important gekennzeichnete haben immer höhere Priorität.
Reihenfolge der Interpretation:
1. Vom Browser definierte Stylesheets
2. Vom Surfer definierte Stylesheets
3. In der Seite definierte Stylesheets
Siehe auch: http://de.selfhtml.org/css/formate/kaskade.htm
Webtechnologien – WS 2017/18 - Teil 4/CSS I
47
Beispiel für !important
h1 {
font-face: Times;
font-size: 20px;
color: black !important;
}
Webtechnologien – WS 2017/18 - Teil 4/CSS I
49
Beispiel I
<!DOCTYPE html PUBLIC ... ... <html>
<head ... ... >
<title>...</title>
<style type="text/css">
#Ebene1 {
position: absolute;
top: 80px; left: 160px;
width: 200px; height: 100px;
border: 2px dashed olive;
display: block }
a[href^="mailto:"]:before {content: "\2709";}
</style>
</head>
<body>
<div id="Ebene1">Das ist der Inhalt</div>
<p> <a href="http://www.google.de"> google </a>
<p> <a href="mailto:[email protected]"> Messer </a>
</body> </html>
Webtechnologien – WS 2017/18 - Teil 4/CSS I
50
Beispiel II - Ergebnis
Webtechnologien – WS 2017/18 - Teil 4/CSS I
51
Beispiel III – Attribute für <div>
Attribut
Erläuterung
position: absolute;
Das Rechteck soll an einer
bestimmten Stelle innerhalb des
umfassenden Rahmens sein
top: 80px; left: 160px;
Koordinaten der linken oberen Ecke
width: 200px; height: 100px;
Breite und Höhe
border: 2px dashed olive;
Art des Rahmens
Webtechnologien – WS 2017/18 - Teil 4/CSS I
52
Nach dieser Anstrengung etwas Entspannung...
Webtechnologien – WS 2017/18 - Teil 4/CSS I
53
Herunterladen