91
Praktikum Webtechnologien Wintersemester 2010 Jens Grochtdreis und Martin Kliehm

Praktikum in Frontendentwicklung - Session1

Embed Size (px)

DESCRIPTION

Die Inhalte meiner ersten "Session" des Praktikums über Frontendentwicklung an der Uni Mainz. Die Stundenten sollten erst einmal in die Grundproblematik eingeführt werden.

Citation preview

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