+ )
+}
+
+
diff --git a/src/content/snippets/typografie/snippet-relative-font-size.astro b/src/content/snippets/typografie/snippet-relative-font-size.astro
index 93043ba..7e12236 100644
--- a/src/content/snippets/typografie/snippet-relative-font-size.astro
+++ b/src/content/snippets/typografie/snippet-relative-font-size.astro
@@ -1,31 +1,5 @@
---
import Snippet from '@components/Snippet.astro'
-import { codeToHtml } from 'shiki'
-
-const code = await codeToHtml('foo\bar', {
- lang: 'js',
- theme: 'vitesse-light',
- transformers: [
- {
- code(node) {
- this.addClassToHast(node, 'language-js')
- },
- line(node, line) {
- node.properties['data-line'] = line
- if ([1, 3, 4].includes(line)) this.addClassToHast(node, 'highlight')
- },
- span(node, line, col) {
- node.properties['data-token'] = `token:${line}:${col}`
- }
- }
- ]
-})
-
-// const codeBlock = document.querySelector('#code')
-
-// if (codeBlock) {
-// codeBlock.innerHTML = code
-// }
---
diff --git a/src/content/tutorials/absolute-und-relative-einheiten.mdx b/src/content/tutorials/absolute-und-relative-einheiten.mdx
new file mode 100644
index 0000000..d867d5b
--- /dev/null
+++ b/src/content/tutorials/absolute-und-relative-einheiten.mdx
@@ -0,0 +1,157 @@
+---
+title: 'Längenmaße: Absolute und relative Einheiten in CSS'
+description: 'Die Größe von Elementen kann in absoluten oder relativen Einheiten angegeben werden. Hier erfährst du, welche Einheiten es gibt und wann du welche verwenden solltest.'
+isDraft: false
+pubDate: 2024-10-17T15:40:00+00:00
+author: david-maciejewski
+cover:
+ path: '/src/images/tutorials/jahrmarkt-aepfel.png'
+ alt: 'Zwei Stundeniernde blicken fragend in Richtung Kamera.'
+ caption: 'Wie viele Äpfel kaufst du auf dem Markt? 12 oder 50 Prozent aus der Box?'
+tags: ['css']
+---
+
+import Figure from '@components/Figure.astro'
+import Table from '@components/Table.astro'
+
+import SnippetNestedBoxes from '@snippets/relative-units/snippet-nested-boxes.astro'
+
+## Unterschiede
+
+Jede CSS-Deklaration enthält ein Paar aus Eigenschaft und Wert. Bei Längen- oder Größenangaben von HTML-Elementen werden numerische Werte verwendet, entweder als ganze Zahl oder als Dezimalzahl:
+
+
+
+Wenn du dem Verkäufer auf dem Jahrmarkt bittest, dir 12 Äpfel zu verkaufen, dann ist das ein absoluter Wert. Wenn du dir hingegen die Hälfte der Äpfel aus der Kiste nimmst, dann ist das ein relativer Wert, abhängig von der Gesamtanzahl.
+
+Auch in CSS gibt es absolute und relative Werte. Ein Beispiel: Der Bildschirm des Apple-Tablets iPad hat Pixelmaße von 1024x768. Möchtest du jetzt zwei Boxen nebeneinander darstellen und verwendest dabei fixe Werte wie `width: 512px`, dann wird dir das auf dem Smartphone um die Ohren fliegen. Zum einen sind die Dimensionen des Smartphones kleiner, zum anderen wird die Box auf dem iPad nicht nebeneinander dargestellt, weil der Platz nicht ausreicht.
+
+Wenn du hingegen relative Einheiten wie Prozente (z.B. `width: 50%`) verwendest, dann passt sich die Box immer an die Größe des Elternelements[^1] an. Und das wiederum passt sich an die Größe des eigenen Elternelements an. Das geht so lang weiter bis zum obersten Element, dem Root-Elements[^2] `html`. Das ist im Übrigen 100 % des Viewport[^3] breit, also der Breite des Bildschirms. Das folende responsive Beispiel illustriert das:
+
+
+
+## Relative Einheiten
+
+Die relativen Einheiten unterteilen sich in verschiedene Kategorien, abhängig von dem, woran du dich orientieren möchtest. Die gebräuchlichste Kategorie ist die der [relativen Schriftlängen](#relative-schriftlängen). Hierbei beziehen sich die Einheiten auf die Schriftgröße des Elternelements.
+
+### Relative Schriftlängen
+
+Neben der Angabe in Prozent, die du bereits schon kenngelernt hast, gibt es auch noch folgende Einheiten:
+
+
+| Einheit | Relativ zu |
+|---------|--------------|
+| `em` | Schriftgröße des Elternelements |
+| `cap` | Höhe der Großbuchstaben |
+| `ch` | Breite des Zeichens `0` |
+| `ex` | Höhe des Buchstabens `x` |
+| `lh` | Zeilenhöhe eines Elements |
+
+
+`em` ist dabei die gebräuchliste Einheit. Sie bezieht sich auf die Schriftgröße des Elternelements. `1em` entspricht 100 %, 150 % wären dann `1.5em`. Schauen wir uns exemplarisch das folgende Beispiel an.
+
+In der Box soll der Fließtext 18 Pixel groß sein, also etwas größer als der Fließtext der anderen Elemente auf der Website. Die Überschrift soll 150 % der Schriftgröße unserer Box betragen.
+
+
+
+Die Überschrift entspräche umgerechnet `27px`. Die Formel dazu lautet: `18px * 1,5 = 27px`.
+
+### Relativ zum Root-Element
+
+Wenn du die 18 Pixel der Announcement-Box vom Beispiel oben ebenfalls relativ angeben möchtest, und das solltest du, dann kannst du das auch mit `em` tun. Der Haken an der Sache: Wenn du in die Announcement-Box eine weitere Announcement-Box einfügst, dann orientiert sich die zweite an der ersten Box. Desto mehr Boxen du ineinander verschachtelst, desto größer wird jeweils die Schrift. Während `1.5em` in der ersten Box 27 Pixel entsprechen, entsprechen `1.5em` in der zweiten Box 40.5 Pixel.
+
+Klingt kompliziert und ist es auch. Besser wäre es, die Einheit `rem` zu verwenden. Das **r** in `rem` steht für **root** und bezieht sich dabei auf das Root-Element. Der Browser gibt vor, dass die Standardgröße für Fließtext **16 Pixel** groß ist, kann aber auch vom User in den Einstellungen verändert werden.
+
+Noch einmal zusammengefasst:
+
+em
+: Die relative Einheit `em` bezieht sich auf die Schriftgröße des Elternelements. `1em` entsprechen 100 %, 150 % wären dann `1.5em`.
+
+rem
+: Die relative Einheit `rem` bezieht sich auf die Schriftgröße des `html`- oder `body`-Elements, das sind in der Regel `16px`. Das **r** in `rem` steht für **root**.
+
+Der angepasste Code sieht dann so aus:
+
+
+
+Hier einmal eine Gegenüberstellung unserer Announcement-Box, bei der wir (umgerechneet) 18 statt 16 Pixel verwenden:
+
+
+
+Übrigens gibt auch von `cap`, `ch`, `ex` und `lh` eine Variante, die sich auf das Root-Element bezieht. Diese haben dann ein `r` vorangestellt, also `rch` statt `ch`.
+
+> Unter [Assets](/assets#typografie) habe ich dir ein paar Links zu Tools interlegt, mit denen du die Größen berechnen kannst.
+
+### Relativ zum Viewport
+
+Der Vollständigkeit halber möchte ich noch die Einheiten erwähnen, die sich auf den Viewport und auf den Container beziehen. Das ist für dich am Anfang noch nicht sonderlich relevant, du wirst aber früher oder später in komplexeren Layouts darüber stolpern.
+
+
+| Einheit | Relativ zu |
+|---------|--------------|
+| `vh` | 1 % der Höhe des Viewports |
+| `dvh` | 1 % der dynamischen[^4] Höhe des Viewports |
+| `vw` | 1 % der Breite des Viewports |
+| `dvw` | 1 % der dynamischen[^4] Breite des Viewports |
+| `vmin` | 1 % des kleineren Wertes des Viewports (Breite oder Höhe) |
+| `vmax` | 1 % des größeren Wertes des Viewports (Breite oder Höhe) |
+
+
+### Relativ zum Container
+
+Längen, die sich auf einen Query-Container[^5] beziehen, sind:
+
+
+| Einheit | Relativ zu |
+|---------|--------------|
+| `cqb` | 1 % der Block-Größe des Query-Containers |
+| `cqh` | 1 % der Höhe des Query-Containers |
+| `cqi` | 1 % der Inline-Größe des Query-Containers |
+| `cqw` | 1 % der Breite des Query-Containers |
+| `cqmin` | 1 % des kleineren Wertes des Query-Containers (Breite oder Höhe) |
+| `cqmax` | 1 % des größeren Wertes des Query-Containers (Breite oder Höhe) |
+
+
+## Aufgabe
+
+Um die relative Einheiten besser zu verstehen, probiere doch einmal, die Announcement-Box mit den oberen CSS nachzubauen. Verwende erst `px` und `em` und teste das Ergebnis im Browser durch Verkleinern und Vergrößern des Fensters. Anschließend ersetze die Einheiten durch `rem` und beobachte den Unterschied.
+
+[^1]: Das Elternelement ist das übergeordnete Element, in dem ein anderes Element eingebettet ist. Es kann auch als Container bezeichnet werden.
+[^2]: Das Root-Element ist das oberste Element in der Hierarchie des DOM-Baums, also das ``-Element.
+[^3]: Der Viewport ist der sichtbare Bereich einer Website im Browserfenster. Er kann sich je nach Gerät und Bildschirmauflösung unterscheiden.
+[^4]: Die dynamische Höhe und Breite des Viewports beziehen sich stets auf die aktuelle Größe des Viewports, also die Größe, die der Viewport gerade hat. Diese verändert sich zum Beispiel durch Scrollbalken oder die Adressleiste des Browsers.
+[^5]: Container-Queries erlauben es, die Größe von Elementen an die Größe ihres Containers anzupassen und nicht an die des Viewports.
\ No newline at end of file
diff --git a/src/content/tutorials/schriften-abstaende-ligaturen-und-layout.mdx b/src/content/tutorials/schriften-abstaende-ligaturen-und-layout.mdx
index 925591d..ded495b 100644
--- a/src/content/tutorials/schriften-abstaende-ligaturen-und-layout.mdx
+++ b/src/content/tutorials/schriften-abstaende-ligaturen-und-layout.mdx
@@ -1,8 +1,8 @@
---
-title: 'Typografie im Web: Schriften, Abstände, Ligaturen und Layout'
+title: 'Typografie im Web: Schriften, Abstände, Ligaturen im Layout'
description: 'Kleine Details in der Typografie und Layout können den Unterschied machen. Hier lernst du, wie du deine Website mit Text gestalten kannst.'
isDraft: true
-pubDate: 2024-10-15T15:08:00+01:00
+pubDate: 2024-12-08T15:12:00+01:00
author: david-maciejewski
cover:
path: '/src/images/tutorials/airport-terminal-sign.jpg'
@@ -21,7 +21,7 @@ import SnippetLigatures from '@snippets/typografie/snippet-ligatures.astro'
## Mit Texten gestalten
-Im [ersten Teil](/tutorials/grundlagen-der-mikrotypografie) der Serie „Typografie im Web“ haben wir einen Blick in die Historie der Typografie geworfen, den Begriff der Maktrotypografie erörtert und gelernt, wie man Texte korrekt formatiert. Da die Grundlagen damit gelegt sind, widmen wir uns in diesem Tutorial um die Gestaltung dieser Texte im Layout deiner Website.
+Im [ersten Teil](/tutorials/grundlagen-der-mikrotypografie) der Serie „Typografie im Web“ haben wir einen Blick in die Historie der Typografie geworfen, den Begriff der Maktrotypografie erörtert und gelernt, wie man Texte korrekt formatiert. Da die Grundlagen damit gelegt sind, können wir uns in diesem Tutorial nun um die Gestaltung dieser Texte im Layout deiner Website kümmern.
> **Hinweis:** Falls du das Tutorial [Grundlagen der Mikrotypografie](/tutorials/grundlagen-der-mikrotypografie) noch nicht gelesen hast, empfehle ich dir, dies nachzuholen.
@@ -33,14 +33,14 @@ Unter dem Schriftbild versteht man die Gesamtheit der optischen Erscheinung eine
Heute erhalten Fließtext und Überschriften oft unterschiedliche Schriftarten. Beispielsweise könntest du für den Fließtext eine serifenlose Schriftart (Sans Serif) wie „Open Sans“ im Schriftschnitt 400 und für Überschriften eine serifenbetonte Schriftart wie „Merriweather“ (Serif) im Schriftschnitt 500 verwenden. Das sähe dann so aus:
-