|
Auf einen Blick |
4 |
|
|
Inhalt |
5 |
|
|
Einleitung |
14 |
|
|
Einleitung zur dritten Auflage |
16 |
|
|
Hinweise zum Buch und zur DVD |
18 |
|
|
TEIL I CSS-Prinzipien, die nicht selbsterklärend sind |
20 |
|
|
1 Eine Annäherung an die Spezifikation |
22 |
|
|
1.1 Der Zweck der Spezifikation |
22 |
|
|
1.2 Designprinzipien von CSS |
24 |
|
|
1.3 Warum gibt es dieses oder |
25 |
|
|
1.4 einen Zugang zur Spezifikation finden |
27 |
|
|
1.4.1 CSS 2.1: x und CSS3: Modul y |
28 |
|
|
1.4.2 Erwartungen von HTML5 an die |
29 |
|
|
1.5 Zur Begriffsbestimmung |
30 |
|
|
1.5.1 Box Model |
30 |
|
|
1.5.2 »must« und »should« |
30 |
|
|
1.5.3 Regeln |
30 |
|
|
1.5.4 Replaced Elements |
31 |
|
|
1.5.5 User, User Agent, Author |
31 |
|
|
2 Vertikale Anordnung |
32 |
|
|
2.1 100 % Mindesthöhe |
34 |
|
|
2.2 Fußzeile am Ende – FooterStick |
37 |
|
|
2.2.1 FooterStick |
37 |
|
|
2.2.2 FooterStickAlt |
40 |
|
|
2.3 Collapsing Margins in |
42 |
|
|
2.3.1 Wann fallen Ränder nicht zusammen? |
44 |
|
|
2.3.2 Sonderfall: Zusammenfallende Ränder |
47 |
|
|
2.4 Vertikal zentrieren |
50 |
|
|
2.4.1 Eine Box mit bekannter Höhe vertikal zentrieren |
51 |
|
|
2.4.2 Eine Box mit unbekannter Höhe vertikal zentrieren |
56 |
|
|
2.4.3 Zusammenfassung und Ausblick |
61 |
|
|
3 Horizontale Anordnung |
62 |
|
|
3.1 Ausrichtung mit Margin |
62 |
|
|
3.2 negative Margins |
63 |
|
|
3.2.1 Box mit gemischter Breite |
65 |
|
|
3.2.2 Asymmetrische Ausrichtung |
68 |
|
|
3.3 Mindest- und Maximalbreiten |
70 |
|
|
3.3.1 Mindest- und Maximalbreiten im IE < 7 |
71 |
|
|
3.3.2 Zusammenfassung |
76 |
|
|
3.3.3 Relevanz in der Praxis? |
77 |
|
|
4 Floats |
78 |
|
|
4.1 Was kann Float? |
78 |
|
|
4.1.1 Bilder von Text umfließen lassen |
79 |
|
|
4.1.2 Ein Einstieg in Spalten mit Float |
81 |
|
|
4.1.3 Mehrere aufeinanderfolgende Floats |
83 |
|
|
4.2 Float beenden: Clear |
89 |
|
|
4.2.1 Clear ohne Margins |
92 |
|
|
4.2.2 Clear-Element mit Margin: Kollabieren |
92 |
|
|
4.2.3 Clear-Element mit Margin: Kollabieren unterbunden |
95 |
|
|
4.2.4 Clear-Element mit Margin und Float |
95 |
|
|
4.2.5 Clear-Element mit Margin: Kollabieren |
96 |
|
|
4.2.6 Negative Clearance |
98 |
|
|
4.2.7 Fingerübung: Spaltenübergreifend umflossenes Bild |
99 |
|
|
4.3 Floats einschließen – |
103 |
|
|
4.3.1 Einschließen mit Clear |
104 |
|
|
4.3.2 Floats in Floats einschließen |
106 |
|
|
4.3.3 Easyclearing – Floats einschließen |
107 |
|
|
4.3.4 overflow zum Einschließen von Floats |
111 |
|
|
4.3.5 Welche Methode ist die richtige? |
112 |
|
|
4.4 Zusammenfassung |
112 |
|
|
4.5 Exkurs: Block Formatting Context |
113 |
|
|
4.5.1 Ungewolltes Clear einschränken |
115 |
|
|
4.5.2 Floats durch BFC einschließen |
119 |
|
|
4.5.3 Zusammenfassung |
119 |
|
|
4.6 Anwendungsbeispiel: FooterStickAlt |
120 |
|
|
4.6.1 FSA und solides Clear |
122 |
|
|
4.6.2 FSA und Easyclearing |
123 |
|
|
4.6.3 FSA und »Float in Float« |
125 |
|
|
4.6.4 FSA und Clear mit dem Footer |
127 |
|
|
5 Das Inline-Formatierungsmodell |
128 |
|
|
5.1 Inline Formatting Context |
128 |
|
|
5.1.1 Zeilenboxen und ihre Inline-Boxen |
128 |
|
|
5.1.2 line-height |
129 |
|
|
5.1.3 Inhaltsbereich der Inline-Box |
130 |
|
|
5.1.4 Vertikale Anordnung der inline-Boxen – |
131 |
|
|
5.1.5 Horizontale Verteilung der Inline-Boxen – text-align |
132 |
|
|
5.2 Blöcke in einer Zeile – |
133 |
|
|
5.2.1 inline-Block im ie < 8 |
133 |
|
|
5.2.2 Inline-Block im Firefox < 3 |
135 |
|
|
5.2.3 Zeilenumbruch von Blöcken |
135 |
|
|
6 Positionierung und Stapelung |
138 |
|
|
6.1 Stapelkontexte |
138 |
|
|
6.1.1 Abfolge des Zeichnens |
139 |
|
|
6.1.2 Beispiele und Erläuterungen zur Zeichnungsabfolge |
139 |
|
|
6.1.3 Was bedeutet ein negativer Wert für z-index? |
149 |
|
|
6.2 Containing Block |
150 |
|
|
6.2.1 Bezugsrahmen |
150 |
|
|
6.2.2 Initial Containing Block, Canvas und Viewport |
151 |
|
|
6.2.3 Prozentangaben |
151 |
|
|
6.2.4 Containing Block im IE ? 7 |
152 |
|
|
6.3 Relative Positionierung |
153 |
|
|
6.4 Absolute Positionierung |
154 |
|
|
6.4.1 Konzept |
154 |
|
|
6.4.2 Probleme im IE < 8 mit absoluter Positionierung |
155 |
|
|
6.5 Fixierte Positionierung |
158 |
|
|
6.5.1 Exkurs: Simulation fixierter Positionierung im IE < 7 |
159 |
|
|
6.6 Opacity – die Undurchsichtigkeit |
163 |
|
|
6.7 Exkurs: Shrink-to-fit |
164 |
|
|
6.7.1 Auslöser |
164 |
|
|
6.7.2 Bestimmung der Shrink-to-fit-Breite |
165 |
|
|
6.7.3 Fallstricke bei der Verwendung |
166 |
|
|
6.7.4 Intrinsische Größen in CSS3 |
167 |
|
|
7 Background-Images |
168 |
|
|
7.1 Die Hintergrundeigenschaften |
168 |
|
|
7.2 background-position |
169 |
|
|
7.3 background-repeat |
172 |
|
|
7.4 background-attachment |
173 |
|
|
7.4.1 Der Wert scroll |
173 |
|
|
7.4.2 Der Wert fixed |
174 |
|
|
7.4.3 Der Wert local |
176 |
|
|
7.4.4 … und der Internet Explorer ? 7 |
177 |
|
|
7.5 background-clip und |
177 |
|
|
7.6 background-size |
178 |
|
|
7.7 Faux Columns |
179 |
|
|
7.7.1 Faux Columns als linear-gradient |
180 |
|
|
7.7.2 Liquid Faux Columns |
186 |
|
|
7.8 navigation mit Tabs |
191 |
|
|
7.8.1 Sliding Doors of CSS |
193 |
|
|
7.8.2 CSS-Sprites |
194 |
|
|
7.9 PNG-Transparenz vs. GIF-Transparenz |
198 |
|
|
8 Das CSS-Tabellenmodell |
202 |
|
|
8.1 Das Gestalten von Tabellen und |
203 |
|
|
8.1.1 Display-Eigenschaften |
203 |
|
|
8.1.2 Anonyme Tabellenobjekte und die |
204 |
|
|
8.1.3 Tabellenzellen |
206 |
|
|
8.1.4 Spalten |
207 |
|
|
8.1.5 Position der Tabellenbeschriftung |
208 |
|
|
8.1.6 Tabellenebenen |
209 |
|
|
8.1.7 Width-Algorithmen |
209 |
|
|
8.1.8 Höhe und vertikale Anordnung |
212 |
|
|
8.1.9 Border |
212 |
|
|
8.1.10 Spanning |
212 |
|
|
8.2 ein hybrides Layout |
213 |
|
|
8.2.1 Besonderheiten im HTML |
213 |
|
|
8.2.2 CSS für konforme Browser |
215 |
|
|
8.2.3 CSS per Conditional Comment für den ie ? 7 |
217 |
|
|
8.3 Das Auszeichnen von |
218 |
|
|
9 Ausgabe für Medien |
222 |
|
|
9.1 @media print |
222 |
|
|
9.2 Das mobile Web |
225 |
|
|
9.2.1 Best Practice Guidelines und Tutorials |
225 |
|
|
9.2.2 Die One-Web-Debatte |
226 |
|
|
9.3 Media Queries – »Medienabfragen« |
227 |
|
|
9.4 Und was ist mit Style in E-Mail? |
228 |
|
|
TEIL II Inkonsistenzen in Browsern und die Grundlagen des Debuggings |
230 |
|
|
10 Debugging |
232 |
|
|
10.1 Vorab: Das Layout unter |
233 |
|
|
10.2 CSS- und HTML-Validierung |
233 |
|
|
10.3 Reduktion auf das Problem |
235 |
|
|
10.4 Das Testen in den Browsern |
236 |
|
|
10.4.1 Der Meta-Opt-out im IE ? 8 |
236 |
|
|
10.4.2 Paralleles Testen in mehreren Versionen des IE |
240 |
|
|
10.4.3 Safari und Webkit (Mac und Win) |
244 |
|
|
10.4.4 Google Chrome |
244 |
|
|
10.4.5 Opera |
244 |
|
|
10.4.6 Firefox |
244 |
|
|
10.5 Werkzeuge für Analyse und |
245 |
|
|
10.5.1 Firebug, DOM Inspector, Web Developer |
245 |
|
|
10.5.2 ie Developer Toolbar |
248 |
|
|
10.5.3 Webkit Web inspector und Chrome Developer Tools |
250 |
|
|
10.5.4 Opera Dragonfly |
251 |
|
|
10.6 Hacks |
251 |
|
|
10.6.1 CSS-Hacks |
253 |
|
|
10.6.2 Conditional Comments |
255 |
|
|
10.6.3 Auf dem Weg zu einer soliden Hacking-Strategie |
258 |
|
|
10.7 Magic Bullets gegen Bugs des IE Win |
260 |
|
|
10.7.1 hasLayout |
260 |
|
|
10.7.2 position: relative |
263 |
|
|
10.7.3 negativer Backside Margin |
265 |
|
|
10.7.4 :hover { background: 0 0 } |
266 |
|
|
10.7.5 Markup-Änderung: Elemente trennen |
266 |
|
|
10.8 Bug-Ressourcen |
267 |
|
|
10.8.1 Private Seiten |
267 |
|
|
10.8.2 Bugtracker der Browseranbieter |
268 |
|
|
10.9 Mailinglisten und Foren |
271 |
|
|
10.10 Exkurs: Wenn sich die konformen |
272 |
|
|
11 CSS-Erweiterungen |
276 |
|
|
11.1 Präfixe |
276 |
|
|
11.2 Der AlphaImageLoader-Filter im IE |
277 |
|
|
11.2.1 notation |
278 |
|
|
11.2.2 Verhalten des Filters |
279 |
|
|
11.2.3 Hinweise zur Verwendung |
279 |
|
|
11.2.4 Nicht anklickbare Links |
279 |
|
|
11.2.5 PnG-Scripts |
282 |
|
|
11.3 Behavior im IE |
284 |
|
|
11.4 Expression im IE |
286 |
|
|
11.4.1 Ereignisse, bei denen Expressions |
287 |
|
|
11.4.2 Expression für min/max-width im IE 6 |
288 |
|
|
11.4.3 Expression für max-width in em |
290 |
|
|
11.5 Die zoom-Eigenschaft im IE |
291 |
|
|
11.5.1 Notation |
291 |
|
|
11.5.2 zoom und hasLayout |
291 |
|
|
TEIL III Die praktische Umsetzung von komplexen Layouts |
294 |
|
|
12 Navigation: Listen und Menüs |
296 |
|
|
12.1 Horizontale navigation |
299 |
|
|
12.1.1 Horizontale navigation mit display: inline |
299 |
|
|
12.1.2 Horizontale navigation mit display: inline-block |
304 |
|
|
12.1.3 Horizontale navigation mit display: table-cell |
305 |
|
|
12.1.4 Horizontale navigation mit Float |
310 |
|
|
12.2 Vertikale Navigation |
317 |
|
|
12.2.1 Besonderheiten im IE ? 7 |
317 |
|
|
12.2.2 Exkurs: Navigation mit Erläuterung als »dl-Tabelle« |
319 |
|
|
12.3 Verschachtelte navigation |
322 |
|
|
12.4 Ausklappmenü |
323 |
|
|
12.4.1 einfaches Dropdown-Menü |
324 |
|
|
12.4.2 Workaround für ie < 7 mit Script |
327 |
|
|
12.4.3 ie-Workaround mit Conditional Comments |
329 |
|
|
12.4.4 Flyout-Menü |
329 |
|
|
12.4.5 Flyout-Menü mit mehr als zwei Ebenen |
334 |
|
|
12.4.6 Hinweise zu Ausklappmenüs |
334 |
|
|
12.5 Kennzeichnung des aktuellen |
334 |
|
|
12.5.1 Hervorhebung durch body-Klasse oder -ID |
335 |
|
|
12.5.2 Hervorhebung durch Linkklasse/-ID |
336 |
|
|
12.5.3 Entfernung des Links |
336 |
|
|
13 Mehrspaltenlayouts |
338 |
|
|
13.1 Das perfekte Layout? |
338 |
|
|
13.1.1 Fixes Layout: Breiten in Pixel |
339 |
|
|
13.1.2 Fluides Layout: Breiten in Prozent |
340 |
|
|
13.1.3 Elastisches Layout: Breiten in der Einheit em |
340 |
|
|
13.1.4 Mischformen |
343 |
|
|
13.1.5 Responsive Layout mit Media Queries |
344 |
|
|
13.2 Spaltenanordnung: Die Basis |
345 |
|
|
13.3 Spalten mit einheitlichen |
351 |
|
|
13.3.1 Fixes Layout |
351 |
|
|
13.3.2 Fixes Layout mit Content First per |
355 |
|
|
13.3.3 Elastisches Layout mit Content First |
357 |
|
|
13.3.4 Fluides Layout mit Mindest-/Maximalbreite |
361 |
|
|
13.4 Spalten mit gemischten |
365 |
|
|
13.4.1 Einrückung des Inhaltsbereichs und |
366 |
|
|
13.4.2 Content-Wrapper mit negativen Backside-Margins |
368 |
|
|
13.4.3 Einrückung des umgebenden Elements und |
372 |
|
|
13.4.4 Einrückung des umgebenden Elements, Verschie-bung |
380 |
|
|
13.5 Spalten ohne Float: hybrides Layout |
385 |
|
|
13.5.1 CSS-Tabelle für konforme Browser |
385 |
|
|
13.5.2 Inline-Block-Workaround für IE ? 7 |
387 |
|
|
13.6 Welche Technik ist die beste? |
389 |
|
|
14 Gleich hohe Spalten |
390 |
|
|
14.1 Spalten im umgebenden |
390 |
|
|
14.1.1 Faux Columns |
390 |
|
|
14.1.2 negative Verschiebung auf Randbereiche |
397 |
|
|
14.2 Verlängerung der Spalten |
403 |
|
|
14.2.1 Equal Height Columns |
403 |
|
|
14.2.2 Companion Columns |
408 |
|
|
14.3 Gleich hohe Spalten in den |
414 |
|
|
TEIL IV Was vor uns liegt |
416 |
|
|
15 Frontend-Engineering |
418 |
|
|
15.1 Der neue Blick auf die Performance |
418 |
|
|
15.1.1 Netzwerkmonitore |
419 |
|
|
15.1.2 Fiddler – HTTP Debugging Proxy |
422 |
|
|
15.1.3 YSlow und Page Speed |
423 |
|
|
15.1.4 HTTP Archive Format |
425 |
|
|
15.1.5 Reduktion der HTTP-Requests |
426 |
|
|
15.1.6 Optimierung des HTML |
426 |
|
|
15.2 Für welche Browser soll |
427 |
|
|
16 Neue Konzepte |
430 |
|
|
16.1 Das Flexible Box Layout Module |
430 |
|
|
16.1.1 Die Flexbox |
431 |
|
|
16.1.2 Die Elemente der Flexbox |
431 |
|
|
16.1.3 Ein flexibler Footer |
431 |
|
|
16.2 Die eigenschaft display ist |
434 |
|
|
16.3 Feature Queries |
435 |
|
|
16.4 Scoped CSS |
436 |
|
|
16.5 Mehr Typografie mit CSS3 |
437 |
|
|
16.5.1 Angepasste Größe einer Ersatzschrift |
437 |
|
|
16.5.2 Schriften einbinden mit @font-face |
439 |
|
|
16.5.3 Exkurs: Über die Lesbarkeit |
440 |
|
|
16.5.4 Spaltensatz mit dem Multi-column Layout |
445 |
|
|
Index |
448 |
|