Am Ende ist doch alles HTML (Uni Mainz)

78
Am Ende ist doch alles HTML Aspekte der Frontendentwicklung Jens Grochtdreis

description

Vortrag an der Uni Mainz über die Grundlagen der Frontendentwicklung. Wie sollte man fürs Frontend denken? Woran muss man denken? Womit muss man sich beschäftigen?

Transcript of Am Ende ist doch alles HTML (Uni Mainz)

Page 1: Am Ende ist doch alles HTML (Uni Mainz)

Am Ende ist doch alles HTML

Aspekte der Frontendentwicklung

Jens Grochtdreis

Page 2: Am Ende ist doch alles HTML (Uni Mainz)

‣ Frontendentwickler

‣ 10 Jahre Agenturerfahrung

‣ 11 Jahre Arbeit im und fürs Web

‣Gründer der Webkrauts

‣ Blogger

‣ Autor des PHPMagazins, PHPUser, Webstandards-Magazins, T3N

‣ Fachliche Buchbetreuung bei Galileo, O'Reilly, MuT

Jens Grochtdreis

Page 3: Am Ende ist doch alles HTML (Uni Mainz)

Ebenen einer Webseite

Datenbanken

PHP, Java, Perl usw.

(X)HTML

CSS

Javascript

Page 4: Am Ende ist doch alles HTML (Uni Mainz)

http://failblog.files.wordpress.com/2009/10/epic-fail-quality-hotel-fail.jpg

Meta-Thema: Qualität

Page 5: Am Ende ist doch alles HTML (Uni Mainz)

Schlechte Qualität sieht man

http://snipurl.com/vtoow

Page 7: Am Ende ist doch alles HTML (Uni Mainz)

Schlechte Qualität sieht man

http://failblog.files.wordpress.com/2009/10/epic-fail-door-fail.jpg

Page 8: Am Ende ist doch alles HTML (Uni Mainz)

Auch im Internet

Page 9: Am Ende ist doch alles HTML (Uni Mainz)

Auch im Internet

http://stern.de

Page 10: Am Ende ist doch alles HTML (Uni Mainz)

http://snurl.com/t58ch

Page 11: Am Ende ist doch alles HTML (Uni Mainz)

‣ Erschreckende Codedefizite laut Opera-Studie:

‣58,5% Webseiten ohne Überschriften-Elemente

‣7,1% mit Überschriften ohne logische Reihenfolge

‣24,9% mit Bildern ohne alt-Attribute

‣4,13% der Testseiten validierten

http://www.einfach-fuer-alle.de/blog/id/2505/

Problemfeld: Entwickler

Page 12: Am Ende ist doch alles HTML (Uni Mainz)

Validität ist nicht alles<form action="helpdesk.html" method="post" enctype="multipart/form-data" id="emailform"> <table class="webform_table"> <tr> <td class="webform_label">Name des Meldenden / Ansprechpartners: *</td> <td class="webform_field"><input type="text" name="InputField-1" value="" class="onlineform" /></td> </tr>

<tr> <td class="webform_label">Email:*</td> <td class="webform_field"><input type="text" name="InputField-4" value="@khwe.de" class="onlineform" /></td> </tr> <tr> <td class="webform_label_multi">Bitte geben Sie hier Ihre Meldung ein:*</td> <td class="webform_field_multi"><textarea name="InputField-6" class="onlineform" rows="6" cols="20"></textarea></td> </tr> <tr> <td>&nbsp;</td> <td class="webform_button">Alle Eingabefelder, die mit einem Stern (*) versehen sind, sind Pflichtfelder.</td> </tr> <tr> <td>&nbsp;</td> <td class="webform_button"><input type="submit" value="Formular absenden" class="formbutton submitbutton" /></td> </tr> </table></form>

Page 13: Am Ende ist doch alles HTML (Uni Mainz)

Manchmal nur Kleinigkeiten

Page 14: Am Ende ist doch alles HTML (Uni Mainz)

‣Wir nutzen sehr viele verschiedene Standards und Technologien, um eine Website zu betreiben.

‣ (X)HTML, CSS, Javascript, DOM 1-3

‣Flash, Flex, SWF

‣PHP, ASP, Perl, Java

‣MySQL, PostgreSQL

‣XML, XSLT

‣ ...

Das Internet ist komplex

Page 15: Am Ende ist doch alles HTML (Uni Mainz)

‣Das Internet ist ein neues Medium!

‣ junges Medium

‣rasante Entwicklung

‣ spannend

‣atemberaubend

‣umwälzend

‣ in ständigem Wandel begriffen

Nicht vergessen!

Page 16: Am Ende ist doch alles HTML (Uni Mainz)

‣Das Internet bietet viele unterschiedliche Zugänge zu Informationen

‣Am Monitor lesen

‣Ausdrucken

‣Vorlesen lassen

‣ Formate sind anpassbar

‣ Inhalte lassen sich leicht rudimentär übersetzen

‣Wir wissen nichts Definitives über das Zielsystem

Nicht vergessen!

Page 17: Am Ende ist doch alles HTML (Uni Mainz)

‣Wie können wir heute ins Internet gehen?

‣PC, Notebook

‣viele Betriebssysteme, Browser, Monitore

‣Handy, PDA

‣Spielkonsole

‣TV

‣Assistive Technologien

Kontrollverlust - formal

Page 18: Am Ende ist doch alles HTML (Uni Mainz)

Unsicherheiten

‣ Betriebssysteme

‣ Browser

‣ Browserversionen

‣ Monitorauflösungen

‣ Individuelle Einrichtungen des Browsers

‣ Umgebungslicht

‣ mobiler Zugriff

‣ Zugriffsgeschwindigkeit

‣ Plugins

‣ Javascript

Page 19: Am Ende ist doch alles HTML (Uni Mainz)

http://snipurl.com/2c1yl

Flexibilität ist Stärke

Die Flexibilität des Internet ist seine Stärke.Akzeptiert es! Macht Euch locker!

Page 20: Am Ende ist doch alles HTML (Uni Mainz)

‣Wir können nicht mehr sicher vorhersagen, wie jemand unsere Seite sieht/liest.

‣Deshalb: einen für möglichst viele gangbaren Weg beschreiten

‣ Erst der Inhalt, dann das Layout!

‣Der Inhalt ist das Wichtigste!

Flexibilität ist wichtig

Page 21: Am Ende ist doch alles HTML (Uni Mainz)

Screenshot von einem EeePC, 800x480px

Page 22: Am Ende ist doch alles HTML (Uni Mainz)

Wichtiger Hinweis

Zur Nutzung der Vodafone Videothek benötigen Sie einen

Rechner mit Windows-Betriebssystem in Verbindung

mit Internet Explorer ab Version 6 oder Firefox ab Version 3

http://videothek.vodafone.de/

Page 23: Am Ende ist doch alles HTML (Uni Mainz)

http://snurl.com/t58fj

Page 24: Am Ende ist doch alles HTML (Uni Mainz)

‣ Mit der Bedeutung der Inhalte beschäftigen

‣ Die Struktur erfassen und aufschreiben

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

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

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

Semantik

Page 25: Am Ende ist doch alles HTML (Uni Mainz)

Webseiten: mehr als nur Dokumente

‣ Die Dokumentenanalogie ist alt.

‣ Ziel waren wissenschaftliche Texte.

‣ HTML5 ist der Versuch, der Realität gerecht zu werden. Der erste Schritt!

‣ Es gibt immer mehr Applikationen.

‣ Es fehlen Bedienelemente

‣ Webseiten sind immer seltener Dokumente

Page 26: Am Ende ist doch alles HTML (Uni Mainz)
Page 27: Am Ende ist doch alles HTML (Uni Mainz)
Page 28: Am Ende ist doch alles HTML (Uni Mainz)

Fehlende Bedienelemente

Page 29: Am Ende ist doch alles HTML (Uni Mainz)

HTML5-Formularelemente

Search: <input type="search"> URL: <input type="url"> Telephone: <input type="telephone"> Number: <input type="number"> Range: <input type="range"> Color: <input type="color"> Datetime Local: <input type="datetime-local"> Datetime: <input type="datetime"> Date: <input type="date"> Month: <input type="month"> Week: <input type="week"> Time: <input type="time">

Page 30: Am Ende ist doch alles HTML (Uni Mainz)

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

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

Überschriften

Page 31: Am Ende ist doch alles HTML (Uni Mainz)

Überschriften

‣ Webseiten sind immer seltener Dokumente

‣ Kann eine Webseite mehr als eine h1 vertragen?

‣ Nur eine h1? Warum?

‣ Wir vermeiden sonst Analogien zur Printwelt

‣ Struktur für Sehende und Blinde anders?

‣ Reichen sechs Überschriftsebenen?

Page 32: Am Ende ist doch alles HTML (Uni Mainz)

Neue HTML5-Elemente

Page 33: Am Ende ist doch alles HTML (Uni Mainz)

Kenne Dein (X)HTML!

‣ Wie sehen ungeordnete Listen aus?

‣ Wie sieht eine Überschrift dritten Grades aus?

‣ Wie sieht ein Zitat aus?

Page 34: Am Ende ist doch alles HTML (Uni Mainz)

HTML ohne eigenes CSS

Page 35: Am Ende ist doch alles HTML (Uni Mainz)

HTML ungestylt

Page 36: Am Ende ist doch alles HTML (Uni Mainz)

browser.css

Safari4 (Mac) Firefox 3.5 (Mac)

Page 37: Am Ende ist doch alles HTML (Uni Mainz)

http://www.iecss.com/

Page 38: Am Ende ist doch alles HTML (Uni Mainz)

Simpler Browser-Reset

<style type="text/css" media="screen"> * {margin: 0; padding: 0; font-size: 100.01%; font-weight: normal;}</style>

Page 39: Am Ende ist doch alles HTML (Uni Mainz)

Yahoo-Reset

html{color:#000;background:#FFF;}body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,textarea,p,blockquote,th,td{margin:0;padding:0;}

table{border-collapse:collapse;border-spacing:0;}fieldset,img{border:0;}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal;}

li{list-style:none;}caption,th{text-align:left;}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal;}

q:before, q:after{content:'';}abbr, acronym{border:0;font-variant:normal;}sup{vertical-align:text-top;}sub{vertical-align:text-bottom;}

input,textarea,select{font-family:inherit;font-size:inherit;font-weight:inherit;}input,textarea,select{*font-size:100%;}legend{color:#000;}

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

Page 40: Am Ende ist doch alles HTML (Uni Mainz)

Eric Meyers Reset

/* v1.0 | 20080212 */

html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre,a, abbr, acronym, address, big, cite, code, del, dfn, em, font, img, ins, kbd, q, s, samp,small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li,fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td { margin: 0; padding: 0; border: 0; outline: 0; font-size: 100%; vertical-align: baseline;background: transparent; }body { line-height: 1;}ol, ul { list-style: none;}blockquote, q { quotes: none;}blockquote:before, blockquote:after,q:before, q:after { content: ''; content: none;}

/* remember to define focus styles! */:focus { outline: 0;}

/* remember to highlight inserts somehow! */ins { text-decoration: none;}del { text-decoration: line-through;}

/* tables still need 'cellspacing="0"' in the markup */table { border-collapse: collapse; border-spacing: 0;}

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

Page 41: Am Ende ist doch alles HTML (Uni Mainz)

Diverse Stylesheets

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

‣ Browser haben eigene Stylesheets

‣ Nutzer können eigene Stylesheets haben

Page 42: Am Ende ist doch alles HTML (Uni Mainz)

_ Letztendliche Sicherheit über die Darstellung einer Seite gibt es nicht. Man kann aber dafür sorgen, daß ein Layout nicht allzu schnell "zerstört" wird.

Page 43: Am Ende ist doch alles HTML (Uni Mainz)

Keine Tabellen? Doch!

‣ Tabellen sind für tabellarische Daten da!

‣ Für Layoutzwecke gibt es CSS!

‣ Eine Tabelle kann komplex werden und ist mehr als nur <table>, <tr> und <td>

Page 44: Am Ende ist doch alles HTML (Uni Mainz)

Keine Tabellen? Doch!<table summary="Table summary"> <caption></caption> <thead> <tr> <th></th> <th></th> <th></th> </tr> </thead> <tfoot> <tr> <td></td> <td></td> <td></td> </tr> </tfoot> <tbody> <tr> <td></td> <td></td> <td></td> </tr> </tbody></table>

Page 45: Am Ende ist doch alles HTML (Uni Mainz)

Sinn von Tabellen ...

http://bundesliga.de

Page 46: Am Ende ist doch alles HTML (Uni Mainz)

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

Wen interessieren Browser?

Page 47: Am Ende ist doch alles HTML (Uni Mainz)

Bremsfaktor IE

‣ Der IE (bis Version 8) kann bedeutend weniger als andere Browser.

‣ Der IE6 stirbt nicht!

‣ Der Fortschritt richtet sich nach dem Langsamsten wegen dessen Verbreitung.

Page 48: Am Ende ist doch alles HTML (Uni Mainz)

_Nur Entwickler interessieren sich für Browser.

Page 49: Am Ende ist doch alles HTML (Uni Mainz)

http://snurl.com/t58bi

Page 50: Am Ende ist doch alles HTML (Uni Mainz)
Page 51: Am Ende ist doch alles HTML (Uni Mainz)

„Schweizer Messer“ für IE6

‣ position: relative

‣ zoom: 1

‣ height: 1%

‣ display: inline (bei Floats)

Page 52: Am Ende ist doch alles HTML (Uni Mainz)

Der Frontendentwickler ist ein Übersetzer!

Page 53: Am Ende ist doch alles HTML (Uni Mainz)

Übersetzer

‣ Der Nutzer sieht nur das Frontend.

‣ Die Technik dahinter (bspw. CMS) interessiert den Konsumenten nicht.

‣ Entscheidungen aller anderen „Gewerke“ fließen in das Frontend mit ein.

‣ Hilfe zur Verständigung zwischen Grafik, Beratung und Backend aus Eigeninteresse.

Page 54: Am Ende ist doch alles HTML (Uni Mainz)

http://vikiworks.com/2007/08/27/flat-panel-monitor-icon/

Agenturalltag

Page 55: Am Ende ist doch alles HTML (Uni Mainz)

Beliebte Problemfälle

Page 56: Am Ende ist doch alles HTML (Uni Mainz)

‣ Nicht alle Layoutwünsche lassen sich einfach lösen.

‣ Manche erkauft man sich mit Einschränkungen

‣ Im Layout herrscht immernoch die Printanalogie vor

‣ Die Möglichkeiten differieren zwischen Browsern

Layoutwünsche

Page 57: Am Ende ist doch alles HTML (Uni Mainz)

Lösung: anders denken!

Page 58: Am Ende ist doch alles HTML (Uni Mainz)

Gleich hohe Boxen

http://grochtdreis.de/

Page 59: Am Ende ist doch alles HTML (Uni Mainz)

Mit einer Tabelle kein Problem!

Page 60: Am Ende ist doch alles HTML (Uni Mainz)

Ohne Layouttabellen

‣ Die Elemente einer Seite haben keine Beziehung zueinander, es sei denn, es sind Kindelemente!

Page 61: Am Ende ist doch alles HTML (Uni Mainz)

Gleich hohe Boxen

<!-- start: 3*33% Subcolumns --><h2>Aus meinem Weblog</h2><div id="teaser" class="subcolumns"> <div class="c33l"> <div class="subcl equalise eins"> <h3><a href="toller-link.html">Überschrift</a></h3> <p>Kurzbeschreibung bzw. Anriss des Inhalts</p> <p class="weiter"><a href="#">Den ganzen Artikel lesen.</a></p> </div> </div> <div class="c33l"> <div class="subc equalise zwei"> <!-- wie oben --> </div> </div> <div class="c33r"> <div class="subcr equalise drei"> <!-- wie oben --> </div> </div></div><!-- end: 3*33% Subcolumns -->

Page 62: Am Ende ist doch alles HTML (Uni Mainz)

Das DOM

div#teaser.subcolumns

div.c33l div.c33l div.c33r

div.subcl div.subc div.subcr

h3 p p.weiter h3 p p.weiter h3 p p.weiter

Page 63: Am Ende ist doch alles HTML (Uni Mainz)

http://www.positioniseverything.net/articles/onetruelayout/equalheight

moderne Browser

IE6 und 7

Gleich hohe Boxen

http://yaml.de

.equalize > div { display:table-cell; float:none; margin:0; overflow:hidden; vertical-align:top;}

.equalize, .equalize .subcolumns { overflow:visible; display:table; table-layout:fixed; }

Page 64: Am Ende ist doch alles HTML (Uni Mainz)

moderne Browser

IE6 und 7

Gleich hohe Boxen

/* Fix for:"Linking to anchors in elements within the containing block" Problem in IE5.x & IE 6.0 */ * html .equalize, * html .equalize .subcolumns { overflow:visible; display:block; } .equalize, .equalize .subcolumns { overflow:hidden; display:block; }

/* transform CSS tables back into floats */ .equalize .c20l,.equalize .c40l,.equalize .c60l,.equalize .c80l, .equalize .c25l,.equalize .c33l,.equalize .c38l,.equalize .c50l, .equalize .c62l,.equalize .c66l,.equalize .c75l { float:left; display:inline; padding-bottom:32767px; margin-bottom:-32767px; } .equalize .c20r,.equalize .c40r,.equalize .c60r,.equalize .c80r, .equalize .c25r,.equalize .c33r,.equalize .c38r,.equalize .c50r, .equalize .c62r,.equalize .c66r,.equalize .c75r { float:right; margin-left:-5px; display:inline; padding-bottom:32767px; margin-bottom:-32767px; }

http://www.positioniseverything.net/articles/onetruelayout/equalheighthttp://yaml.de

Page 65: Am Ende ist doch alles HTML (Uni Mainz)

http://www.yaml.de/de/dokumentation/anwendung/subtemplates.html

Gleich hohe Boxen

Page 66: Am Ende ist doch alles HTML (Uni Mainz)

Formularfelder

Passwort

‣ Passworte werden NIE angezeigt

‣ Runde Ecken kann man mittels CSS3 hinzufügen

‣ Vorgegebener Text ist Stolperfalle für Nutzer und Entwickler

‣ Label haben ihren Sinn!

‣ Gerne sehr klein und schwer bedienbar

Page 67: Am Ende ist doch alles HTML (Uni Mainz)

Runde Ecken

http://grochtdreis.de/

Page 68: Am Ende ist doch alles HTML (Uni Mainz)

Zwei Welten: IE und moderne Browser

Page 69: Am Ende ist doch alles HTML (Uni Mainz)

Runde Ecken

http://www.cssjuice.com/25-rounded-corners-techniques-with-css/

Page 70: Am Ende ist doch alles HTML (Uni Mainz)

Runde Ecken - The ThrashBox

http://www.vertexwerks.com/tests/sidebox/

Page 71: Am Ende ist doch alles HTML (Uni Mainz)

Wartungshölle

‣ Für jede Farbe eine eigene Grafik (auch für hover bei Links!)

‣ Runde Ecken auf Verläufen oder Transparenzen sind ganz übel als Grafik

‣ Jede Änderung und Anpassung geschieht in Photoshop/Fireworks

‣ Viele Requests

‣ Keine Skalierung

Page 72: Am Ende ist doch alles HTML (Uni Mainz)

Runde Ecken für moderne Browser

#twitter { border-radius: 0.6em; -moz-border-radius: 0.6em; -webkit-border-radius: 0.6em;}

.box1, .box2, .adressbox { border: 2px solid #eee; border-radius: 0.6em; -moz-border-radius: 0.6em; -webkit-border-radius: 0.6em;}

/* Ohne die folgende Zeile ragen die Ecken der Überschrift aus der Box raus. Der gleiche Radius darf es auch nicht sein, sonst entsteht eine Lücke. Es scheint immer die Hälfte sein zu müssen. */.box1 h3, .box2 h3 { border-top-left-radius: 0.3em; border-top-right-radius: 0.3em; -moz-border-radius-topleft: 0.3em; -moz-border-radius-topright: 0.3em; -webkit-border-top-left-radius: 0.3em; -webkit-border-top-right-radius: 0.3em;}

Page 73: Am Ende ist doch alles HTML (Uni Mainz)

Reiter

Page 74: Am Ende ist doch alles HTML (Uni Mainz)

http://github.com/ginader/Accessible-Tabs

Reiter

Page 75: Am Ende ist doch alles HTML (Uni Mainz)

Reiter (Tabs)

Page 76: Am Ende ist doch alles HTML (Uni Mainz)

Reiter (Tabs)<div class="tabs"> <h2>eine Beispielüberschrift</h2> <div class="tabbody"> <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</p> <h3>Lorem ipsum</h3> <p>Nullam malesuada suscipit pede. Nullam ipsum lacus, varius</p> </div> <h2>noch eine Beispielüberschrift</h2> <div class="tabbody"> <p>Integer tincidunt. Cras dapibus. Vivamus elementum nisi.</p> <p>Quisque rutrum. Aenean imperdiet. Etiam ultricies nisi vel.</p> </div> <h2>alles andere</h2> <div class="tabbody"> <p>Hier könnte Ihr Inhalt stehen</p> </div></div>

$(document).ready(function(){ $('.tabs').accessibleTabs();});

Page 77: Am Ende ist doch alles HTML (Uni Mainz)

http://snipurl.com/vtmpw

Page 78: Am Ende ist doch alles HTML (Uni Mainz)

Jens Grochtdreishttp://grochtdreis.de

http://twitter.com/Flockehttp://webkrauts.de

Diese Präsentation steht unter der Creative Commons Lizenz „Attribution-ShareAlike 2.0“ http://creativecommons.org/licenses/by-sa/2.0/de/