Transcript
Page 1: Praktikum in Frontendentwicklung - Session1

Praktikum Webtechnologien

Wintersemester 2010

Jens Grochtdreis und Martin Kliehm

Page 2: Praktikum in Frontendentwicklung - Session1

Session 1

Page 3: Praktikum in Frontendentwicklung - Session1

Ebenen einer Webseite

Datenbanken

PHP, Java, Perl usw.

(X)HTML

CSS

Javascript

Page 4: Praktikum in Frontendentwicklung - Session1

Am Anfang ging alles schnell!

Page 5: Praktikum in Frontendentwicklung - Session1

‣ 1995: HTML 2

‣ 1997: HTML 3.2

‣ 1998: HTML 4

‣ 1999: HTML 4.01

‣ 2001: XHTML 1

‣ 1996: CSS 1

‣ 1998: CSS 2

Page 6: Praktikum in Frontendentwicklung - Session1

Die Basis unserer Arbeit ist mehr als 10 Jahre alt!

Page 7: Praktikum in Frontendentwicklung - Session1

HTML oder XHTML?

Page 8: Praktikum in Frontendentwicklung - Session1

Schreibweisen

‣ <image>

‣ <br>

‣ <meta>

‣ <image />

‣ <br />

‣ <meta />

HTML XHTML

Page 9: Praktikum in Frontendentwicklung - Session1

Der IE kann kein echtes XHTML (und wird es nie

können).

Page 10: Praktikum in Frontendentwicklung - Session1

‣ Echtes XHTML benötigt application/xhtml+xmlim Content-Header.

‣ Möchtegern-XHTML kommt mit text/htmlim Content-Header (Tag-Soup)

Content-Header

Page 11: Praktikum in Frontendentwicklung - Session1

Kenne Dein (X)HTML!

‣Wie sehen ungeordnete Listen aus?

‣Wie sieht eine Überschrift dritten Grades aus?

‣Wie sieht ein Zitat aus?

Page 12: Praktikum in Frontendentwicklung - Session1

HTML ohne eigenes CSS

Page 13: Praktikum in Frontendentwicklung - Session1

HTML ungestylt

Page 14: Praktikum in Frontendentwicklung - Session1

browser.css

Safari4 (Mac) Firefox 3.5 (Mac)

Page 15: Praktikum in Frontendentwicklung - Session1

http://www.iecss.com/

Page 16: Praktikum in Frontendentwicklung - Session1

Simpler Browser-Reset

Page 17: Praktikum in Frontendentwicklung - Session1

Yahoo-Reset

http://developer.yahoo.com/yui/3/cssreset/

Page 18: Praktikum in Frontendentwicklung - Session1

Eric Meyers Reset

http://meyerweb.com/eric/tools/css/reset/index.html

Page 19: Praktikum in Frontendentwicklung - Session1

Diverse Stylesheets

‣ HTML sieht nicht aus, sondern transportiert Bedeutung und Struktur!

‣ Browser haben eigene Stylesheets

‣ Nutzer können eigene Stylesheets haben

Page 20: Praktikum in Frontendentwicklung - Session1

‣ Blockelemente erzeugen einen Absatz nach sich.

‣ Nicht alle Elemente können ineinander geschachtelt werden.

‣ Bei Inlineelementen gibt es keine vertikalen Margins.

‣ Niemals Block- in Inlineelemente verschachteln!

Block- und Inlineelemente

Page 21: Praktikum in Frontendentwicklung - Session1

‣ Blockelemente:

‣ div | dl | fieldset | form | h1-6 | hr | ol | p | table | ul

‣ Inlinelemente:

‣ a | abbr | acronym | br | del | em | img | ins | input | label | span | strong | sub | sup

Beispiele

Page 22: Praktikum in Frontendentwicklung - Session1

Besser wär das

Page 23: Praktikum in Frontendentwicklung - Session1

‣ Falsch:

‣ <br><font size="7"><b>Heading Text</b></font><br>

‣ Richtig:

‣ <h1>Heading Text</h1>

Gern falsch gemacht

Page 24: Praktikum in Frontendentwicklung - Session1

‣ Mit der Bedeutung der Inhalte beschäftigen

‣ Eine semantisch ausgezeichnete Seite zeigt, daß man sich Gedanken über seine Arbeit gemacht hat.

‣ Erst fragen, WAS es ist, dann fragen, wie es AUSSEHEN soll.

Semantik

Page 25: Praktikum in Frontendentwicklung - Session1

‣ Die Struktur erfassen und aufschreiben

‣ richtig: <h2>Überschrift</h2>

‣ falsch: <div class="headline">Überschrift</div>

Semantik

Page 26: Praktikum in Frontendentwicklung - Session1

‣ Google ignoriert <h1>, da dort meist ein Logo und der Firmenname drin sind.

‣ Wenn die Überschrift die gleiche Schriftgröße wie der Absatz hat, kann man trotzdem nicht auf die Überschrift verzichten

‣ Trennung von Sinn und Optik!

‣ h1 { font-size: 12px;}

‣ p { font-size: 12px;}

Überschriften

Page 27: Praktikum in Frontendentwicklung - Session1

‣ Überschriften sind eine Navigationsmöglichkeit für Screenreader.

‣ Wikis generieren aus den Textüberschriften eine seiteninterne Navigation, ein Inhaltsverzeichnis.

‣ Dafür gibt es auch ein jQuery-Plugin: jqPlanize [http://snipurl.com/2v4wm]

Überschriften

Page 28: Praktikum in Frontendentwicklung - Session1

‣ Im Quellcode sollten die Überschriftenhierarchien logisch aufeinander folgen.

‣ Nicht <h4> auf <h2> folgen lassen.

‣ Es gibt keine Meta-Überschriften, wie in den traditionellen Printmedien.

‣ Semantik der Überschriften ist unterentwickelt und sehr strikt.

Überschriftenreihenfolge

Page 29: Praktikum in Frontendentwicklung - Session1

h2h3h4h5

h3

h4

Überschriftenreihenfolge

Page 30: Praktikum in Frontendentwicklung - Session1

<h2>Gammelkäse ist nur selten ungesund</h2>

<h3>Ernährung</h3>

h2 { position: relative; top: 35px;}h3 { position: relative; top: -35px; color: red;}

Überschriftenreihenfolge

Page 31: Praktikum in Frontendentwicklung - Session1

‣ Grundlage des Überschreibens der Standardkonfiguration sind Kaskade und Spezifität.

‣ Kaskade: „wer zuletzt kommt malt zuerst“

‣ Spezifität

Kaskade und Spezifität

Page 33: Praktikum in Frontendentwicklung - Session1
Page 34: Praktikum in Frontendentwicklung - Session1

‣ Vorsicht walten lassen.

‣ Mit allgemeinen Regeln beginnen

‣ Spezifität nur im Notfall erhöhen

‣ Lieber eine neue Klasse als Ausnahme

‣ IDs selten nutzen

Wichtige Regeln

Page 35: Praktikum in Frontendentwicklung - Session1
Page 36: Praktikum in Frontendentwicklung - Session1
Page 37: Praktikum in Frontendentwicklung - Session1

http://www.flickr.com/photos/fmg2001/679774853/sizes/o/

Wen interessieren Browser?

Page 38: Praktikum in Frontendentwicklung - Session1

Nur Entwickler!

Page 39: Praktikum in Frontendentwicklung - Session1

http://www.flickr.com/photos/fmg2001/679774853/sizes/o/

Wen interessieren Browser?

Page 40: Praktikum in Frontendentwicklung - Session1

Feindliche Umgebung

http://www.gtalbot.org/BrowserBugsSection/

Page 42: Praktikum in Frontendentwicklung - Session1

Nur wer vergleicht, kann Unterschiede entdecken

Page 43: Praktikum in Frontendentwicklung - Session1

http://stuffandnonsense.co.uk/

Page 44: Praktikum in Frontendentwicklung - Session1

Ein normaler Konsument vergleicht aber keine

Browserdarstellungen.

Page 45: Praktikum in Frontendentwicklung - Session1

Müssen Webseiten überall gleich aussehen?

http://dowebsitesneedtolookexactlythesameineverybrowser.com/

Page 46: Praktikum in Frontendentwicklung - Session1

Und gehst Du zum Browser, vergiss die Peitsche nicht.

In Anlehnung an F. Nietzsche

Page 47: Praktikum in Frontendentwicklung - Session1

Die drei Browser-Wars

http://andysworld.org.uk/blog/wp-content/uploads/2010/03/browser-war.jpg

Page 48: Praktikum in Frontendentwicklung - Session1

1. Krieg

‣ Microsoft gegen Netscape

‣ Netscape verschwindet

‣ Aus der Asche entsteigt Mozilla

‣ Kampf der proprietären Erweiterungen

‣ Microsoft war der Innovator bis IE6

‣ Sieg hat Microsoft träge gemacht

http://www.open2.net/blogs/media/blogs/netscape_corner.jpg

Page 49: Praktikum in Frontendentwicklung - Session1

2. Krieg

‣ Neue Browser gegen Microsoft

‣ Mozilla führt die Attacke an

‣ Microsoft braucht lange, um aus der Erstarrung zu erwachen

‣ Innovation

‣ Ohne Mozilla wär das Web ein öder Ort

http://www.pc1news.com/articles-img/small/browser_war.jpg

Page 50: Praktikum in Frontendentwicklung - Session1

3. Krieg

‣ Apple treibt die Konkurrenz in Sachen Innovation vor sich her

‣ Neue Ideen werden erst proprietär für die iGeräte gelöst, dann als Standardisierung vorgeschlagen

‣ Großer Fokus auf mobiles Web

http://publizieren-im-netz.de/browser-schicksal

Page 51: Praktikum in Frontendentwicklung - Session1
Page 52: Praktikum in Frontendentwicklung - Session1

‣ Aus CSS-Sicht unterscheiden wir grob in zwei Kategorien:

‣ Die IEs für Windows

‣ Der Rest

‣ 100% richtig ist das aber nicht, denn wir haben eine große Vielfalt mit Eigenheiten zu betrachten, und wir haben uns noch nicht Spielkonsolen und Handys zugewandt!

‣ Und: der IE9 wird gut werden!

Browserkunde (1) ‏

Page 53: Praktikum in Frontendentwicklung - Session1

‣ Nur-Text-Browser wie Lynx

‣ Browser zur Ausgabe für Sehbehinderte (meist "Browsererweiterungen")

‣ alte Browser, die kein CSS können oder dies nur rudimentär

Browserkunde (2) ‏

Page 54: Praktikum in Frontendentwicklung - Session1

‣ IE 6

‣ IE 7

‣ IE 8

‣ IE 9

‣ Gecko-Browser (Mozilla und die Abarten inklusive Firefox)

‣ Opera

‣ Webkit-Browser (Safari + Chrome)

Browserkunde (3) ‏

Page 55: Praktikum in Frontendentwicklung - Session1

Doctypes und Quirks-Modus

Page 56: Praktikum in Frontendentwicklung - Session1

‣ Doctypes kann man unterschiedlich schreiben.

‣ Zudem kann man die XHTML mit oder ohne XML-Prolog schreiben.

Doctypes

Page 57: Praktikum in Frontendentwicklung - Session1

Quirks-Modus

‣ Ein XML-Prolog schickt den IE6 IMMER in den Quirks-Modus.

‣ <?xml version="1.0"?>

‣ Auch ein Kommentar VOR der DTD

‣ <!-- Du depperter IE -->

Page 58: Praktikum in Frontendentwicklung - Session1

‣ Es gibt grundsätzlich zwei Modi:

‣ Standard- und Quirks-Modus.

‣ Die größten Unterschiede gibt es beim IE6.

‣ Dieser kennt das korrekte Boxmodell nur im Standardmodus.

‣ Im Quirks-Modus verhält er sich dann wie ein IE 5.

‣ Der IE 6 verfällt zudem beim Vorliegen eines

Quirks-Modus

Page 59: Praktikum in Frontendentwicklung - Session1

‣ keine DTD angegeben

‣ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

‣ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN">

‣ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

‣ <!DOCTYPE HTML PUBLIC "-//W3C//DTD

Quirks-Modus bei IE6 und 7

Page 60: Praktikum in Frontendentwicklung - Session1

http://snurl.com/t58dc

Informationen sammeln

Page 61: Praktikum in Frontendentwicklung - Session1

http://webkrauts.de

Page 62: Praktikum in Frontendentwicklung - Session1

http://dev.opera.com/articles/wsc/

Page 66: Praktikum in Frontendentwicklung - Session1

http://icant.co.uk/

Page 67: Praktikum in Frontendentwicklung - Session1

http://net.tutsplus.com/

Page 68: Praktikum in Frontendentwicklung - Session1

http://www.smashingmagazine.com/

Page 69: Praktikum in Frontendentwicklung - Session1

http://sixrevisions.com/

Page 70: Praktikum in Frontendentwicklung - Session1

http://developer.mozilla.com/

Page 71: Praktikum in Frontendentwicklung - Session1

Gute Bücher

Page 72: Praktikum in Frontendentwicklung - Session1
Page 73: Praktikum in Frontendentwicklung - Session1
Page 74: Praktikum in Frontendentwicklung - Session1

Jedem Browser das Seine - Hacks und Filter

Page 75: Praktikum in Frontendentwicklung - Session1

‣ Manchmal ist es während der Entwicklung sinnvoll, schnell eine Browser auszuschließen oder anzusprechen.

‣ Oder wir wollen für ganz wenige Extrawürste nicht ein spezielles IE-Stylesheet erstellen.

‣ Dann kann man „Hacks“ nutzen.

‣ Es gibt davon sehr viele, nur wenige sind praktikabel.

Browserhacks

Page 76: Praktikum in Frontendentwicklung - Session1

‣ p {-width: 300px;}

‣ versteht nur der IE Windows bis Version 6

‣ * html p {width: 300px;}

‣ versteht nur der IE Windows bis Version 6

‣ * + html p {width: 300px;}

‣ versteht nur der IE 7

Browserhacks

Page 77: Praktikum in Frontendentwicklung - Session1

‣ Man muss nicht zwangsweise Hacks nutzen.

‣ Um die alten IE bis Version 6 auszusperren genügen schon intelligentere Selektoren und CSS3

‣ div > p {width: 300px;}

‣ div[id=navigation] { width: 300px;}

Browserhacks

Page 78: Praktikum in Frontendentwicklung - Session1

‣ /* Hack gegen IE 5 Mac \*/

‣ body { overflow-y: auto;}

‣ /* Erst hier schließt sich für den IE 5 Mac der Kommentar */

‣ div { color: blue; }

‣ * html div { color: red;} /* nur IE bis inkl. Version 6 */

Interessante Browserhacks

Page 81: Praktikum in Frontendentwicklung - Session1

Conditional Comments

Page 82: Praktikum in Frontendentwicklung - Session1

progressive enhancementgraceful degredation

Page 83: Praktikum in Frontendentwicklung - Session1

IE ≠ modern

http://css3generator.com/

Page 84: Praktikum in Frontendentwicklung - Session1

wichtige Erkenntnis: Es kann nicht DIE EINE Darstellungsform geben!

Page 86: Praktikum in Frontendentwicklung - Session1

Der Konsument kann Informationen aus dem Internet

nutzen, wie er es möchte.

Page 87: Praktikum in Frontendentwicklung - Session1

Unser Layout ist nur eine Empfehlung!

Page 88: Praktikum in Frontendentwicklung - Session1

Wenn einige Browserhersteller der technischen Entwicklung

hinterherhinken sollte das nicht unser Problem sein.

Page 90: Praktikum in Frontendentwicklung - Session1

Progressive Enhancement

http://www.alistapart.com/articles/understandingprogressiveenhancement/

‣ Fokus ist auf den Content, denn um den geht es am Ende (fast) immer

Page 91: Praktikum in Frontendentwicklung - Session1

Graceful Degredation

‣ Fokus ist auf den modernsten Browsern

‣ ältere Browser bekommen eine abgespeckte Version