CSS Layouts

topic 01

Display

Blendet ein Element auf der Seite aus:

display: none; 

Flow-Elemente wie z.B. ein Wort oder ein Zeichen in einem Paragrafen/Absatz (width, height und vertical margins können nicht definiert werden):

display: inline; 

Elemente sind nicht im flow (width, height und margins können frei gewählt werden):

display: block; 

Flow-Elemente wie z.B. ein Wort oder ein Zeichen in einem Paragrafen/Absatz (width, height und vertical margins können frei gewählt werden):

display: inline-block; 

Magic rainbow unicorns (mehr dazu später):

display: flex; 

CSS dive deeper

topic 02

History of web design

in a nutshell

Die goldene Ära der Freiheit – Flash (1996)

Flash © froont

Eine Technologie war geboren, die eine neue Freiheit des Webdesigns versprach und bisherige Limitierungen aufhob. Designer konnten auf einmal jede Art von Formen, Layouts, Animationen, Interactionen entwickeln, jeden Font verwenden und all das in einem Tool: Flash. Die fertige Website wurde in ein File gepackt und als jenes an den Browser gesandt, um die Site darzustellen. Solange der User die aktuellste Version des Flash-Plug-ins installiert und etwas Zeit hatte, bis die Seite geladen wurde, funktionierte dies „like magic“. Es war die goldene Ära für Splash Pages, Intro-Animationen und alle Arten von interaktiven Effekten. Leider war das System nicht offen genug oder suchmaschinenfreundlich. Als Apple sich dazu entschied, Flash im ersten iPhone (2007) nicht zu unterstützen, war das der Tod von Flash.

HTML – guter Stil

topic 03

Funktioneller Code

  • Valider Code: Doctypedeklaration angeben <!doctype html>
  • Website validieren z.B. mit dem Validator des W3C
  • Hauptsprache des Dokuments im html-Element spezifizieren – <html lang="de">
  • Zeichen-Encoding im head spezifizieren – <meta charset="utf-8">

Semantisch sinnvoller Code

  • zwei aufeinanderfolgende Dinge gleicher Art (Menüpunkte, Aufzählungen, Inhaltsverzeichnisse) sind bereits eine Liste
  • table-Element nur für tabellarische Daten verwenden. Beliebige Daten können mit CSS tabellarisch ausgerichtet werden.
  • Formulare: <label>-Elemente verwenden, Formulareinheiten mittels <fieldset> gruppieren und Abschnitte mit <legend> beschriften.
  • Klassennamen: klar verständliche Namen vergeben und auf Inhaltstyp referenzieren z.B. class="message error" statt class="red box"
  • unnötige Verschachtelungen von div-Elementen sowie Wrapper-Elementen vermeiden – stattdessen html und body-Elemente stylen
  • auf Elemente verzichten, die reine Verzierung enthalten – diese mittels CSS-Pseudoelemente ::before und ::after erzeugen und stylen

In Anlehnung an XML

  • alle Elementnamen klein schreiben
  • alle Attributnamen klein schreiben
  • Attributwerte immer in doppelte Anführungszeichen (" ") einfassen
  • Elemente, die in HTML auch ohne schließendes Tag notiert werden dürfen (p, th, td, dt, dd, li), werden immer mit schließendem Tag notiert

Strukturierter Quelltext

  • nicht alle Zeilenumbrüche entfernen – Zeilen(nummern) sind ein wichtiger Indikator für Fehler-Berichte
  • Umbrüche zwischen Hauptabschnitte des Dokuments notieren & Kommentarfunktion verwenden
  • Code-Ausrichtung: konsequenter Einsatz von Leerzeichen oder Tabs zur Ausrichtung – nicht beides wahllos mischen
  • Whitespace: HTML interpretiert dies als Leerraum zwischen Wörtern und stellt nur ein einziges Leerzeichen dar – ausgenommen <pre>

Performance

  • CSS und JavaScript als externe Ressourcen einbinden
  • Inline-CSS vermeiden
  • Code auf das Notwendige minimieren
  • Zahl der eingebundenen Ressourcen optimieren
  • Scripte als letztes im body-Element einbinden – Website wird dargestellt und gestylt, bevor JS-Aktionen starten

CSS – guter Stil

topic 04

Syntax-Stil

  • Wichtiger als die Art der Schreibweise ist die Konsistenz
  • z.B. Selektoren untereinander notieren, Block-Klammer in neuer Zeile schreiben, Whitespace konsistent anwenden, Reihenfolge der Eigenschaften, …
  • Einbinden von CSS-Dateien der Notation in style-Elementen vorziehen
  • Shorthand-Schreibweise verwenden
  • eine gute Syntax hilft, den Code schneller zu lesen

Bad Example

#eine-ID .eineKlasse:pseudoclass,#eine-ID .eineKlasse:pseudoclass { border:1px solid red;
margin:0;
  color: #fff; margin-left: 10px;background;#000 url(bild.png);
  display:block;margin-right:20px; 
}

Good Example

#eine-id .eine-klasse:pseudoclass, 
#eine-id .eine-klasse:pseudoclass { 
  border:1px solid red;
  margin:0;
  color:#fff; 
  margin-left:10px;
  background:#000 url(bild.png);
  display:block;
  margin-right:20px; 
}

Great Example

#eine-id .eine-klasse:pseudoclass, 
#eine-id .eine-klasse:pseudoclass { 
  display:block;
  margin:0 20px 0 10px;
  border:1px solid #f00;
  color:#fff; 
  background:#000 url(bild.png); 
}

Reihenfolge der Regeln

Regeln für verschiedene Medientypen trennen und in einer Reihenfolge, entsprechend dem spezifischen Gewicht, notieren

Eine Möglichkeit:

  1. Evt. Normalisierung
  2. @media print
    1. Element-Selektoren
    2. Klassen-Selektoren
    3. ID-Selektoren
  3. @media screen
    1. Element-Selektoren
    2. Klassen-Selektoren
    3. ID-Selektoren

Eine weitere Möglichkeit:

  1. Normalisierung/Reset
  2. Allgemeine Styles
  3. Layout
  4. Sonstige Styles
  5. Media Queries

Normalisierung

  • Browser verwenden ihr eigenes Default-CSS – Defaultregeln können von Browser zu Browser abweichen
  • Teile der Elemene können vorab normalisiert werden
  • Bsp. bei Listen werden Innen- oder Außenabstände unterschiedlich gehandhabt
  • Normalisierung steht vor allen anderen Regeln

Beispiel

* {
  box-sizing: border-box;
}

body {
  margin: 0;
  font-family: …;
}

ul, ol, li, dl, dt, dd {
  display: block;
  padding: 0;
  margin: 0;
}
 
li {
  display: list-item; 
  margin-left: 2em;
}