Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Vorherige Überarbeitung | |||
— | gf_informatik:web:css [2024-12-03 15:45] (aktuell) – [Weiterführende Links] hof | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ===== CSS ===== | ||
+ | |||
+ | **Ziel:** Website von vorherigem Auftrag mithilfe von CSS stylen. | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Mit **HTML** erstellen wir den //Inhalt// für unsere Webseite. Damit diese aber auch ansprechend dargestellt wird, **formatieren** wir sie mittels **Cascading Style Sheets** (CSS). Das Zusammenspiel zwischen HTML und CSS wird in den folgenden Grafiken visualisiert: | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | === Einbindung von CSS in HTML === | ||
+ | |||
+ | Das CSS wird in einer separaten Datei (zum Beispiel `style.css`) gespeichert. Um unsere Webseite zu formatieren, | ||
+ | |||
+ | <code html> | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | <link rel=" | ||
+ | </ | ||
+ | ... | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | Die Trennung von Formatierung und Inhalten ermöglicht es, dasselbe Format und den gleichen Stil auf viele verschiedene Seiten anzuwenden. Beispielsweise muss eine Zeitungs-Website ihr Format nur einmal definieren (und der Browser es nur einmal herunterladen), | ||
+ | |||
+ | === Selektoren und Formatierungsregeln === | ||
+ | |||
+ | Jede **CSS-Regel** besteht aus zwei Teilen: | ||
+ | * dem **Selektor** - er bestimmt, für //welche// Elemente die Regel gilt, und | ||
+ | * den **Formatierungsregeln** - diese definieren, wie die gewählten Elemente // | ||
+ | |||
+ | Der einfachste Selektor besteht einfach aus dem HTML-Element (also dem Tag-Namen). Es gibt noch andere Selektoren, auf die wir hier nicht eingehen. Nach dem Selektor folgen geschweifte Klammern, die die Formatierungseigenschaften enthalten. Jede Eigenschaft wird gefolgt von einem Doppelpunkt, | ||
+ | |||
+ | == Beispiel 1 == | ||
+ | |||
+ | Mit `< | ||
+ | <code css> | ||
+ | strong { | ||
+ | background-color: | ||
+ | } | ||
+ | </ | ||
+ | Nach einem Reload zeigt unsere Webseite nun `< | ||
+ | |||
+ | == Beispiel 2 == | ||
+ | |||
+ | <WRAP group> | ||
+ | <WRAP column half> | ||
+ | |||
+ | Eine etwas ausgereiftere CSS-Datei könnte wie folgt aussehen: | ||
+ | |||
+ | <code css> | ||
+ | body { | ||
+ | background-color: | ||
+ | font-family: | ||
+ | } | ||
+ | h3 { | ||
+ | font-size: 5mm; | ||
+ | color: darkgrey; | ||
+ | } | ||
+ | strong { | ||
+ | background-color: | ||
+ | padding: 1mm; | ||
+ | border: 1px dashed black; | ||
+ | } | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | <WRAP column half> | ||
+ | Wird diese in eine HTML-Datei eingebunden, | ||
+ | |||
+ | < | ||
+ | <div style=" | ||
+ | <div style=" | ||
+ | <h3 style=" | ||
+ | <p>My first paragraph, it's so <strong style=" | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | === Wichtigste CSS-Eigenschaften === | ||
+ | |||
+ | ^ Attribut | ||
+ | | `color` | ||
+ | | `font-family` | ||
+ | | `font-size` | ||
+ | | `font-weight` | ||
+ | | `text-align` | ||
+ | | `background-color` | ||
+ | | `background-image` | ||
+ | |||
+ | === Abstände & Ränder === | ||
+ | {{ : | ||
+ | |||
+ | Jedes Element ist von drei Umrandungen umgeben: | ||
+ | * `padding`: der Innenabstand zwischen Inhalt und `border`, mit Hintergrundfarbe eingefärbt. | ||
+ | * `border`: der Rahmen zwischen `padding` und `margin`, mit eigener Farbe und Stil. | ||
+ | * `margin`: der Aussenabstand zu den benachbarten Elementen, transparent. | ||
+ | * Bei aneinanderstossenden Elementen überlappen sich die Margins, d.h. der Abstand entspricht dem jeweils grösseren. | ||
+ | |||
+ | == Margin & Padding == | ||
+ | Beide Abstandsbreiten können einzeln mit `margin-left`, | ||
+ | |||
+ | Mehr Informationen [[https:// | ||
+ | |||
+ | == Horizontale Zentrierung == | ||
+ | Ein Element (beispielsweise der ganze `body`) lässt sich einfach horizontal zentrieren, indem die Breite auf eine bestimmte Grösse gesetzt wird, und die `margin` links und rechts auf den Wert `auto` gesetzt wird: | ||
+ | |||
+ | |||
+ | <WRAP group> | ||
+ | <WRAP column half> | ||
+ | |||
+ | <code css> | ||
+ | body { | ||
+ | max-width: 10cm; /* Body soll nicht breiter als 10cm sein. */ | ||
+ | margin: 5mm auto; /* Oben und unten 5mm Rand, die Seiten immer gleich breit. */ | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | <WRAP column half> | ||
+ | |||
+ | < | ||
+ | <div style=" | ||
+ | <div style=" | ||
+ | <h3 style=" | ||
+ | < | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | == Border == | ||
+ | |||
+ | Für die `border` funktioniert die Einstellung etwas anders, da neben der Breite auch noch der Stil gesetzt werden kann. Am einfachsten werden alle Angaben zu Breite, Stil und Farbe kombiniert: | ||
+ | |||
+ | <code css> | ||
+ | border: 5mm solid darkblue; | ||
+ | </ | ||
+ | |||
+ | Mehr Informationen [[https:// | ||
+ | |||
+ | == Grössenangaben == | ||
+ | |||
+ | Die Geräte, die unsere Webseite anzeigen sollen, sind sehr unterschiedlich gross: ein Mobiltelefon ist vielleicht 8 oder 10cm breit, auf dem Projektor stehen mehrere Meter zur Verfügung. Deshalb werden auch vermeintlich absolute Grössen wie `cm` oder `mm` vom Browser nicht so absolut interpretiert. Oft ist es ohnehin besser, stattdessen mit einem Mass zu arbeiten, dass sich auf die Schriftgrösse des Elements bezieht: | ||
+ | * `1em` ist ungefähr die Grösse des Buchstabens `M`, je nach Schriftgrösse des Elements. | ||
+ | * `1lh` entspricht der Zeilenhöhe. | ||
+ | |||
+ | Für grössere Layouts können wir mit Grössenangaben relativ zur Grösse des Browserfensters arbeiten: | ||
+ | * `1vw` ist ein Prozent der Breite des Browserfensters. | ||
+ | * `1vh` ist ein Prozent der Höhe des Browserfensters. | ||
+ | |||
+ | Mehr zu [[https:// | ||
+ | === Erweiterte Selektoren === | ||
+ | Bisher haben wir CSS-Regeln für alle gleichen Elemente geschrieben. Die Selektoren können aber noch nach weiteren Kriterien entscheiden, | ||
+ | |||
+ | == Das class Attribut == | ||
+ | Ein HTML-Element kann deklarieren, | ||
+ | |||
+ | <WRAP group> | ||
+ | |||
+ | <WRAP column third> | ||
+ | <code html> | ||
+ | <p class=" | ||
+ | <p class=" | ||
+ | </ | ||
+ | </ | ||
+ | <WRAP column third> | ||
+ | <code css> | ||
+ | .green { | ||
+ | background-color: | ||
+ | } | ||
+ | .red { | ||
+ | background-color: | ||
+ | } | ||
+ | </ | ||
+ | </ | ||
+ | <WRAP column third> | ||
+ | < | ||
+ | <div style=" | ||
+ | <p style=" | ||
+ | <p style=" | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | Ein Element kann auch mehreren Klassen angehören; zudem können wir den Element-Selektor und den Klassenselektor kombinieren: | ||
+ | |||
+ | <WRAP group> | ||
+ | |||
+ | <WRAP column third> | ||
+ | <code html> | ||
+ | <p class=" | ||
+ | <div class=" | ||
+ | </ | ||
+ | </ | ||
+ | <WRAP column third> | ||
+ | <code css> | ||
+ | p.rounded { | ||
+ | padding: 1em; | ||
+ | border-radius: | ||
+ | } | ||
+ | div.rounded { | ||
+ | padding: 0 2em; | ||
+ | border-radius: | ||
+ | } | ||
+ | .green { | ||
+ | background-color: | ||
+ | } | ||
+ | .red { | ||
+ | background-color: | ||
+ | } | ||
+ | </ | ||
+ | </ | ||
+ | <WRAP column third> | ||
+ | < | ||
+ | <div style=" | ||
+ | <p style=" | ||
+ | <div style=" | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | == Das id Attribut == | ||
+ | Ein HTML-Element kann eine Identität deklarieren mit dem `id`-Attribut. Ein Selektor aus dem Hashtag (`#`) und der Identität wählt dieses Element aus: | ||
+ | |||
+ | <WRAP group> | ||
+ | |||
+ | <WRAP column third> | ||
+ | <code html> | ||
+ | <p id=" | ||
+ | < | ||
+ | </ | ||
+ | </ | ||
+ | <WRAP column third> | ||
+ | <code css> | ||
+ | p# | ||
+ | padding: 0.5em; | ||
+ | background-color: | ||
+ | border: 2px dashed black; | ||
+ | } | ||
+ | </ | ||
+ | </ | ||
+ | <WRAP column third> | ||
+ | < | ||
+ | <div style=" | ||
+ | <p style=" | ||
+ | < | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | == Weitere Selektoren == | ||
+ | |||
+ | Weitere Selektoren können Element auswählen, die innerhalb eines anderen bestimmten Elements sind (z.B. alle `< | ||
+ | |||
+ | === Mobilgeräte und Viewport === | ||
+ | Mobilgeräte sind viel kleiner als ein Computerbildschirm. Um trotzdem die ganze Webseite zu zeigen, verkleinern die meisten Mobilgeräte die Seite, aber um den Text lesen zu können, muss sie anschliessend gezoomt werden. | ||
+ | |||
+ | Um dies zu verhindern, kann eine [[https:// | ||
+ | |||
+ | <code html> | ||
+ | < | ||
+ | <meta name=" | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | === Weiterführende Links === | ||
+ | |||
+ | Die Website [[https:// | ||
+ | * mehr zu [[https:// | ||
+ | * mehr zu [[https:// | ||
+ | * mehr zu [[https:// | ||
+ | * [[https:// | ||
+ | * alle [[https:// | ||
+ | |||