Crashkurs HTML und CSS HTML und CSS Hinweis: Dieser Crashkurs liefert einen Überblick und Kriterien für die sachgerechte Verwendung von HTML und CSS. Zum Lernen, Nachschlagen und Ausprobieren verweise ich auf die Kapitel HTML und CSS von Außerdem sollten Sie die Webdeveloper-Werkzeuge Ihres Browsers aktivieren, um Die HTML- und CSS-Quellen der Seiten sehen zu können. (c) schmiedecke 2012 Crashkurs HTML und CSS 2 Q HTML und CSS • HTML • XHTML • HTML5 – seit 1991 – strenge Form, erweiterbar, seit 2000 – streng, seit 2012 – Medientags – erweiterte semantische Auszeichnung • CSS – seit 1994 – "Style"-Sprache, eingebettet oder ausgelagert – heute einziger Träger der Gestaltungsinformation (c) schmiedecke 2012 Crashkurs HTML und CSS 3 Trennung von Inhalt und Form • Aufgabenteilung: Programmierer und Webdesigner • Übertragbarkeit des Designs • Mehrsprachigkeit • Layoutvariationen für div. Endgeräte • Accessability (c) schmiedecke 2012 Crashkurs HTML und CSS 4 Trennung funktioniert: CSS Zen Garden (c) schmiedecke 2012 Crashkurs HTML und CSS 5 HTML: Auszeichnung des Inhalts (c) schmiedecke 2012 Crashkurs HTML und CSS 6 HTML: Aspekte des Inhalts (c) schmiedecke 2012 Crashkurs HTML und CSS 7 HTML: Semantische Auszeichnung Print-Dokument Online-Dokument Semantik-Auszeichnung leistet Gliederung Gruppierung Differenzierung der Inhalte Layout leistet Unterstützung der Semantik optische Aufbereitung Hervorhebung und Fokussierung Layout leistet Gliederung Gruppierung Differenzierung der Inhalte optische Aufbereitung Hervorhebung und Fokussierung (c) schmiedecke 2012 Crashkurs HTML und CSS 8 HTML: Aspekte des Inhalts • Gliederung – – – – – – • links lists images, media forms … (c) schmiedecke 2012 Semantische Abschnitte – – – – – – – title headings paragraph line break subject break <hr> … Elemente – – – – – • • div, span header, footer heading group section article aside … Semantische Elemente – – – – – – – Crashkurs HTML und CSS abbreviation blockquote code, sample date progress strong, emphasize … 9 HTML-Elemente Dokumentenbausteine, von Tags umschlossen <p>neuer Absatz mit viel Text und Bildern</p> Block-Elemente erzeugen einen Zeilenwechsel Inline-Elemente nicht Elemente können geschachtelt werden Leere Elemente haben nur ein Tag <br>, <hr>, <p/> öffnende Tags können Attribute haben <a href="http://www.beuth-hochschule.de">BHT-homepage</a> (c) schmiedecke 2012 Crashkurs HTML und CSS 10 HTML-Elemente Blockelemente Inline-Elemente <p> <h1>…<h6> <ul>, <ol>, <dl> <table> <blockquote> <fieldset> <hr /> <div> © schmiedecke 11 <a> <img> <object> <input>, <textarea> <select> <button> <label> <strong>, <em> <acronym>, <abbr> <q> <span> HCI 11 HTML: Dokumentaufbau minimales HTML(5)-Dokument <!DOCTYPE> – Angabe zur korrekten Behandlung durch den Browser, kann auch enthalten: DTD für XML, Angaben zur Sprachstrenge, ... <head> enthält den Titel, der im Fensterkopf erscheint, zusätzlich ggf. <base/> für die Standard-Basisadresse für Links und Targets, <meta /> für Metainformationen wie Autor, Beschreibung, CMS, …, <link /> zum Einbinden von CSS, Bibliotheken, Bildquellen <body> enthält den darzustellenden Inhalt (c) schmiedecke 2012 Crashkurs HTML und CSS 12 Die wichtigsten HTML-Tags am Beispiel <body> <h2>Beispielseite</h2> <p>erster absatz</p> <h3>Tabelle</h3> <table> <tr> <td></td> <th>Spalte 1</th> <th>Spalte 2</th> </tr> <tr> <th>Zeile 1</th> <td>11</td> <td>12</td> </tr> </table> <br/> © schmiedecke 11 <h3>Liste</h3> <ul> <li>1.Zeile</li> <li>2.Zeile</li> </ul> <p> <a href="http://www.beuthhochschule.de">Beuth-Hochschule</a> </p> <p> <img src="http://www.beuthhochschule.de/uploads/pics/Logo_horizo ntal.gif" alt="BHT-Logo" /> </p> </body> HCI 13 Darstellung ohne CSS © schmiedecke 11 HCI 14 Beuth-Seite ohne CSS (c) schmiedecke 2012 Crashkurs HTML und CSS 15 HTML: Qualitätskriterien • • • • • • valide logische Gliederung semantische Auszeichnung ohne CSS verstehbar gute Navigation barrierefrei (c) schmiedecke 2012 Crashkurs HTML und CSS 16 HTML: Struktureller Aufbau 1. Gliedern – – – 2. Linearisieren – – 3. Lesereihenfolge bestimmen Überspringen und Ein/Ausblenden planen Auszeichnen – – – – 4. HTML-Tags für Überschriften, Blöcke, semantische Elemente, etc. einsetzen ggf. <div>- und <span>-Tags für benannte Blöcke verwednen "class" –oder "id"-Attribut für Blöcke entsprechend der Gliederung setzen. Alternativtext zu allen Bildinformationen Testen – – 5. Inhaltliche Struktur bestimmen Semantische Blöcke benennen Navigation anlegen <body> <div id="header"> …. </div> <div id="navigation"> … </div> <div id="content"> <div id="news"> … </div> <div id="main article"> … </div> <p id="blog entries"> … </p> </div> <div id="footer">…</div> </body> Lesbarkeit und Verständlichkeit ohne CSS Navigation Validieren (c) schmiedecke 2012 Crashkurs HTML und CSS 17 Gestaltung durch CSS Cascading Stylesheets (CSS3) • • • • • <style> body: {color: #F00; } p: {color: #0F0; } ul: {color: #00F; } </style> Gestaltungsangaben wie Farbe, Größe, Font, Position Selektoren beschreiben Gültigkeitsbereich: HTML-Element (Tag): h1 Klasse von Elementen (class-Attribut): .rechteBox Benanntes Element (id-Attribut): #quicklinks Selektoren können gelistet werden (alternativ) h1, .rechteBox Selektoren könne als Pfade angegeben werden #quicklinks ul Für Links gibt es Selektoren nach Zuständen a:link a:visited a:hover Kaskade: • Der spezifischere Selektor überschreibt den allgemeineren (c) schmiedecke 2012 Crashkurs HTML und CSS 18 Einbindung von CSS CSS-Style-Angaben • als style-Attribut direkt in HTML-Tags • als <style>-Tag für das gesamte Dokument • als Datei-Link im Header Kaskade: Attribut > Tag > Datei (c) schmiedecke 2012 Crashkurs HTML und CSS 19 Einbindung von CSS: Beispiele Stylesheet im Header spezifizieren: mit Link-Element einbinden: <link rel="stylesheet" media="screen" type="text/css" href="styles/standard.css" /> im Style-Element importieren <style type="text/css" media="screen"> @import 'styles/standard.css' … weitere CSS-Anweisungen </ style> Inline-CSS mit dem Style-Attribut: <p style="color: #06F; text-align: center;"> ……</p> (c) schmiedecke 2012 Crashkurs HTML und CSS 20 CSS: Das Box-Modell • Jedes Block-Element hat seine "Box" • Für jede Box kann festgelegt werden: – Breite, Höhe, Alignment – Margin, Padding, Border – Absolute Position oder Floatrichtung • Boxen werden untereinander angeordnet – es sei denn, Position oder Floating sind angegeben • Beispiel: Bild rechtsbündig in den nachfolgenden Text integriert: img: { float:right; margin-left: 2em } (c) schmiedecke 2012 Crashkurs HTML und CSS 21 <body> <div id="header"> …. </div> <div id="navigation"> … </div> <div id="content"> <div id="news"> … </div> <div id="main article"> … </div> <p id="blog entries"> … </p> </div> <div id="footer">…</div> </body> Layout gestalten #header {…} #navigation { float:left; width:15em; } #blogs { float.right; width: 10em; font-size:60%; } © schmiedecke 11 header news navigation main article HCI blogs 22 Skalierbarkeit Größenänderungen ohne Informationsverlust • für unterschiedliche Geräte • für sehbehinderte Nutzer (Textvergrößerung) Maßnahmen • Keine absoluten Größenangaben für Text und Box • 55 % • 0.5em • Tabellen: • Texte: (c) schmiedecke 2012 - Relativ zur aktuellen Größe/Breite/Höhe - Relativ zur aktuellen Breite des "M" Breite den <td>-Elementen in Prozent zuordnen, auf keinen Fall Scrolling=NO oder Noresize angeben! Maximalbreite begrenzen (max-width=35em Crashkurs HTML und CSS 23 Fehlermöglichkeiten gibt's genug (c) schmiedecke 2012 Crashkurs HTML und CSS 24 Ein kleines Beispiel: <body> <div id="header"> <p>Titel</p> <h1>Raamattu </h1> </div> <div id="navigation"> <h4>Navigation</h4> <ul> <li>Alussa </li> <li>loi </li> <li>Jumala </li> <li>taivaan </li> <li>ja </li> <li>maan.</li>... </ul> </div> <div id="content"> <h2>Haupttext</h2> <p id="text1">Blindtext</p> <p id="text2">Blindtext</p> <p id="adam"><img src="michelangeloAdam.jpg" alt="Adam, painting by Michelangelo. Painting depicts Godly inspiration of Man" width="264" height="180" /></p> </div> <div id="footer"> <p>Impressum: &copy; schmiedecke 11 - HTMLCSS-Demo</p> </div> </body> HCI 25 Layout ohne CSS © schmiedecke 11 HCI 26 CSS @charset "utf-8"; /* CSS Document */ <style type="text/css"> body { font-family: Verdana, Geneva, sans-serif; max-width: 60em;} #center { background-color: #C97 } #navigation { float: right; width:14em; max-width:20em; padding: 0.4em; } #navigation li { list-style:none; } #content { background-color: #CC9; margin-left:0em; margin-right:15em; max-width:40em; padding: 0.5em; } #header { width:100%; background-image: url(http://....jpg); } #headertext { margin-left:15em; color: #CCC; } © schmiedecke 11 HCI 27 CSS ctd. #footer { width:100%; display: block; float:left; font-size: small; background-color: #999; } #adam { float:right; margin-left: 2em; } </style> © schmiedecke 11 HCI 28 Layout mit CSS © schmiedecke 11 HCI 29 Zu Besuch im CSS Zen Garden (c) schmiedecke 2012 Crashkurs HTML und CSS 30 HTML <body id="css-zen-garden"> <div id="container"> <div id="intro"> <div id="pageHeader"> <h1> <span>css Zen Garden</span> </h1> <h2> <span> The Beauty of <acronym title="Cascading Style Sheets">CSS</acronym> Design </span> </h2> </div> <div id="quickSummary"> <p class="p1"> <span> A demonstration of what can be accomplished visually through <acronym title="Cascading Style Sheets">CSS</acronym> -based design. Select any style sheet from the list to load it into this page. </span> </p> (c) schmiedecke 2012 Crashkurs HTML und CSS 31 CSS: Fahrner Image Replacement (FIR) #intro, #supportingText { padding: 0 69px 0 86px; width: 545px; } #intro { background: url("images/logo.gif") no-repeat scroll left top transparent; padding-top: 230px; } [….] #preamble, #explanation, #participation, #benefits, #requirements { border-bottom: 1px solid #E4E1DB; padding-bottom: 20pt; } #pageHeader, #pageHeader h1, #pageHeader h2, #quickSummary .p1, #linkList2 h3 span { display: none; } FIR: Bekannter Trick, um Trotz Text-Design als Bild die CSS-freie Fassung korrekt zu halten. Leider Screenreader-Probleme… (c) schmiedecke 2012 Crashkurs HTML und CSS 32 Soviel zur Einführung in HTML und CSS nächstes Mal geht es um Barrierefreiheit. (c) schmiedecke 2012 Crashkurs HTML und CSS 33