190 lines
6.0 KiB
HTML
190 lines
6.0 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="de">
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<title>Was wir über Kompression gelernt haben</title>
|
||
<style>
|
||
:root {
|
||
--dark: #1a1a2e;
|
||
--muted: #6b7280;
|
||
--soft: #f8fafc;
|
||
--border: #cbd5e1;
|
||
--hl: #d63384;
|
||
--lossless: #16a34a;
|
||
--lossy: #ef4444;
|
||
}
|
||
html, body { margin: 0; padding: 0; background: #fff; font-family: system-ui, -apple-system, sans-serif; color: var(--dark); }
|
||
body { padding: 30px 40px; }
|
||
h1 { text-align: center; margin: 0 0 6px; font-size: 1.75rem; }
|
||
.sub { text-align: center; color: var(--muted); margin-bottom: 26px; font-size: 1.05rem; }
|
||
.sub strong { color: var(--dark); }
|
||
|
||
.compare {
|
||
display: grid;
|
||
grid-template-columns: 1fr 1fr;
|
||
gap: 22px;
|
||
max-width: 1180px;
|
||
margin: 0 auto;
|
||
}
|
||
|
||
.col {
|
||
border: 2px solid;
|
||
border-radius: 12px;
|
||
padding: 18px 22px;
|
||
background: #fff;
|
||
display: flex;
|
||
flex-direction: column;
|
||
gap: 12px;
|
||
}
|
||
.col.lossless { border-color: var(--lossless); }
|
||
.col.lossy { border-color: var(--lossy); }
|
||
|
||
.col-head { display: flex; justify-content: space-between; align-items: baseline; }
|
||
.col-name { font-size: 1.4rem; font-weight: 700; }
|
||
.col.lossless .col-name { color: var(--lossless); }
|
||
.col.lossy .col-name { color: var(--lossy); }
|
||
.col-tag {
|
||
font-size: 0.72rem;
|
||
font-weight: 700;
|
||
text-transform: uppercase;
|
||
letter-spacing: 0.12em;
|
||
color: var(--muted);
|
||
}
|
||
|
||
.row { display: grid; grid-template-columns: 120px 1fr; gap: 10px 14px; }
|
||
.row-key {
|
||
font-size: 0.72rem;
|
||
font-weight: 700;
|
||
text-transform: uppercase;
|
||
letter-spacing: 0.08em;
|
||
color: var(--muted);
|
||
padding-top: 3px;
|
||
}
|
||
.row-val { font-size: 0.92rem; line-height: 1.5; color: var(--dark); }
|
||
.row-val strong {
|
||
font-family: ui-monospace, monospace;
|
||
background: var(--soft);
|
||
padding: 1px 6px;
|
||
border-radius: 4px;
|
||
}
|
||
|
||
.matrix {
|
||
margin-top: 22px;
|
||
max-width: 1180px;
|
||
margin-left: auto;
|
||
margin-right: auto;
|
||
background: var(--soft);
|
||
border: 1.5px solid var(--border);
|
||
border-radius: 10px;
|
||
padding: 14px 22px;
|
||
}
|
||
.matrix-head {
|
||
font-size: 0.78rem;
|
||
font-weight: 700;
|
||
text-transform: uppercase;
|
||
letter-spacing: 0.1em;
|
||
color: var(--muted);
|
||
margin-bottom: 8px;
|
||
}
|
||
.matrix-grid {
|
||
display: grid;
|
||
grid-template-columns: 1fr 1fr 1fr 1fr;
|
||
gap: 8px 16px;
|
||
font-size: 0.88rem;
|
||
}
|
||
.matrix-grid .scenario { font-weight: 700; color: var(--dark); }
|
||
.matrix-grid .answer {
|
||
font-family: ui-monospace, monospace;
|
||
color: var(--dark);
|
||
}
|
||
.matrix-grid .answer.lossless { color: var(--lossless); font-weight: 700; }
|
||
.matrix-grid .answer.lossy { color: var(--lossy); font-weight: 700; }
|
||
|
||
.verdict {
|
||
margin-top: 18px;
|
||
max-width: 1180px;
|
||
margin-left: auto;
|
||
margin-right: auto;
|
||
text-align: center;
|
||
border: 2px solid var(--hl);
|
||
border-radius: 12px;
|
||
padding: 14px 22px;
|
||
}
|
||
.verdict-q { font-size: 1.1rem; font-weight: 700; color: var(--hl); }
|
||
.verdict-a { font-size: 0.93rem; color: var(--dark); margin-top: 4px; }
|
||
.verdict-a strong { color: var(--hl); }
|
||
</style>
|
||
</head>
|
||
<body>
|
||
<h1>Was wir über Kompression gelernt haben</h1>
|
||
<div class="sub">Zwei fundamental verschiedene Wege, dasselbe Ziel: <strong>Daten kleiner machen.</strong></div>
|
||
|
||
<div class="compare">
|
||
|
||
<div class="col lossless">
|
||
<div class="col-head">
|
||
<span class="col-name">Verlustfrei</span>
|
||
<span class="col-tag">Lossless</span>
|
||
</div>
|
||
<div class="row">
|
||
<div class="row-key">Was passiert</div>
|
||
<div class="row-val">Redundanz raus — Wiederholungen kürzer schreiben</div>
|
||
<div class="row-key">Umkehrbar</div>
|
||
<div class="row-val">Ja. Aus der komprimierten Datei wird das <strong>exakte</strong> Original wieder.</div>
|
||
<div class="row-key">Verfahren</div>
|
||
<div class="row-val">RLE, Huffman, Deflate, LZ77/LZ78</div>
|
||
<div class="row-key">Formate</div>
|
||
<div class="row-val">ZIP · PNG · FLAC · TIFF · RAW</div>
|
||
<div class="row-key">Faktor</div>
|
||
<div class="row-val">2× – 5× (typisch)</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="col lossy">
|
||
<div class="col-head">
|
||
<span class="col-name">Verlustbehaftet</span>
|
||
<span class="col-tag">Lossy</span>
|
||
</div>
|
||
<div class="row">
|
||
<div class="row-key">Was passiert</div>
|
||
<div class="row-val">Irrelevanz raus — was Mensch nicht wahrnimmt, wird weggeworfen</div>
|
||
<div class="row-key">Umkehrbar</div>
|
||
<div class="row-val">Nein. Einmal weg, für immer weg.</div>
|
||
<div class="row-key">Trick</div>
|
||
<div class="row-val">Psychoakustik (MP3) · Psychovisualität (JPEG)</div>
|
||
<div class="row-key">Formate</div>
|
||
<div class="row-val">MP3 · AAC · JPEG · WebP · H.264 · H.265</div>
|
||
<div class="row-key">Faktor</div>
|
||
<div class="row-val">10× – 100× (typisch)</div>
|
||
</div>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
<div class="matrix">
|
||
<div class="matrix-head">Entscheidungsmatrix — wann nehme ich welches?</div>
|
||
<div class="matrix-grid">
|
||
<div class="scenario">Foto-Archiv (RAW)</div>
|
||
<div class="answer lossless">Lossless</div>
|
||
<div class="scenario">Spotify-Stream</div>
|
||
<div class="answer lossy">Lossy</div>
|
||
|
||
<div class="scenario">Code-Repository</div>
|
||
<div class="answer lossless">Lossless (ZIP)</div>
|
||
<div class="scenario">Instagram-Foto</div>
|
||
<div class="answer lossy">Lossy (JPEG)</div>
|
||
|
||
<div class="scenario">Studio-Master-Track</div>
|
||
<div class="answer lossless">Lossless (FLAC)</div>
|
||
<div class="scenario">YouTube-Video</div>
|
||
<div class="answer lossy">Lossy (H.264)</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="verdict">
|
||
<div class="verdict-q">Lossless für Archiv und Code. Lossy für Streaming und Anzeige.</div>
|
||
<div class="verdict-a">Faustregel: <strong>Werkzeug</strong> (du arbeitest noch dran) → Lossless. <strong>Konsum</strong> (du schaust/hörst nur) → Lossy.</div>
|
||
</div>
|
||
</body>
|
||
</html>
|