Mit minimalem CSS eine brauchbare Website erstellen (2023)
(thecascade.dev)- Viele Entwickler geraten durch übermäßig komplexes CSS-Design in unnötige Probleme
- Schon mit minimalen globalen Styles lassen sich ausreichend saubere und responsive Seiten erstellen
- Durch das Begrenzen der Größe und die Block-Darstellung von Bildern, SVGs und Videos lassen sich grundlegende Layout-Probleme lösen
- Mit der Schrift system-ui, passendem Zeilenabstand und einer Begrenzung der maximalen Absatzbreite lässt sich die Lesbarkeit verbessern
- Um bevorzugte Umgebungen wie den Dark Mode des OS zu berücksichtigen, sollte die Eigenschaft color-scheme verwendet werden
Mit minimalem CSS eine brauchbare Website erstellen
Das Problem von übertriebenem CSS und der Ansatz
- Viele Menschen machen das CSS-Design beim Erstellen von Websites unnötig kompliziert
- Schon mit minimalem CSS lassen sich ausreichend elegante und auf das Wesentliche fokussierte responsive Seiten erstellen
Grundlegendes HTML und Umgang mit Bildern
-
Bereits mit einfachem HTML bietet eine Website grundlegende Responsiveness
-
Bilder können jedoch Overflow-Probleme im Layout verursachen, daher wird das folgende CSS angewendet
img { max-width: 100%; display: block; } -
Bei SVG- und video-Elementen können ähnliche Probleme auftreten; dann lässt sich die Regel wie folgt erweitern
img, svg, video { max-width: 100%; display: block; }
Verbesserung der Typografie
-
Die Standardschrift des Browsers wirkt gestalterisch oft etwas langweilig
-
Mit system-ui als Font-Family lässt sich die jeweils plattformspezifische Standardschrift verwenden
-
Da Standard-Schriftgröße und Zeilenabstand oft etwas zu klein ausfallen, wird folgende Anpassung empfohlen
body { font-family: system-ui; font-size: 1.25rem; line-height: 1.5; } -
Schon diese Einstellung bringt gegenüber den Browser-Standardwerten eine deutliche Verbesserung
Unterstützung für den Dark Mode
-
Da viele Nutzer den Dark Mode bevorzugen, ist die Verwendung der Eigenschaft color-scheme, die den OS-Einstellungen folgt, sinnvoll
html { color-scheme: light dark; } -
Diese Eigenschaft sorgt dafür, dass die User-Agent-Styles das vom System bevorzugte Theme automatisch berücksichtigen
-
Sie kann auch als Attribut im HTML-Tag angegeben werden
<html lang="en" color-scheme="light dark"></html> -
Es gilt außerdem als gute Best Practice, Nutzern nicht nur den Systemwert zu überlassen, sondern auch eine direkte Auswahl des Farbschemas zu ermöglichen
Begrenzung der Inhaltsbreite
-
Die Länge von Inhaltsabsätzen ist ein wichtiger Faktor für die Lesbarkeit
-
Im Allgemeinen ist es ideal, wenn Fließtext mit 45 bis 90 Zeichen pro Zeile dargestellt wird
-
Durch eine Begrenzung der maximalen Breite des
main-Elements wie unten gezeigt lässt sich die Lesbarkeit von Absätzen verbessernmain { max-width: min(70ch, 100% - 4rem); margin-inline: auto; } -
Die Funktion
min()wählt den kleineren Wert aus70chund100% - 4rem -
Mit
margin-inline: autowird horizontal zentriert -
Bei Bedarf kann statt
mainauch eine Klasse wie .container oder .wrapper verwendet werden
Beispiel für das endgültige minimale CSS
-
Fasst man das oben Gesagte zusammen, lässt sich mit dem folgenden minimalen CSS-Set eine stabile Website aufbauen
html { color-scheme: light dark; } body { font-family: system-ui; font-size: 1.25rem; line-height: 1.5; } img, svg, video { max-width: 100%; display: block; } main { max-width: min(70ch, 100% - 4rem); margin-inline: auto; }
Abschluss und Erweiterbarkeit
- Das obige Beispiel lässt sich sofort als leichter Ausgangspunkt oder für kleine Seiten einsetzen
- In den meisten Fällen ist es sinnvoll, diese Basis mit zusätzlichen Styles zu erweitern
1 Kommentare
Hacker-News-Kommentare
system-ui-Font-Family in einigen Regionen weiterhin nicht zu empfehlen isthttps://infinnie.github.io/blog/2017/systemui.html
st-Ligatur dieser Schrift so hässlich, dass ich mir von dieser Website keine Font-Ratschläge holen möchtemax-widthverzweifeln? Zielgruppe sind alle, die eine persönliche Homepage bauenDas ist falsch. Die korrekte Syntax ist
Der Autor verwendet es in manchen Beispielen korrekt, im ersten Beispiel aber falsch, was verwirrend sein kann
so. Sowohl
timesals auchTimes New Romanscheinen ohne Anführungszeichen zu funktionieren, daher frage ich mich, ob das eine Sonderbehandlung für alte Fonts ist oder ob CSS beim Namensabgleich einfach großzügig istDas hier würde ich einfach „Cache Money“ nennen
https://meyerweb.com/eric/books/
franklin.jlwar für mich genau richtig, was Mathematik, Inline-Code-Verarbeitung und Schlichtheit angehtcontent-width, großen Fonts und großem Zeilenabstand. Viele Websites verwenden heute übergroße Schriften und weite Zeilenabstände, sodass man viel zu viel scrollen muss. Die Standard-Font-Größe des Browsers ist auf das System abgestimmt, daher sollte man die Font-Größe lieber unverändert lassen und Zoom dafür verwenden0img { max-width: 100%; }Diese Einstellung muss unbedingt zusammen mit
height: autoverwendet werden. Sonst wird das Seitenverhältnis des Bildes verzerrtimg, svg, video { max-width: 100%; }In Chrome 141 wird die
auto-Berechnung wegen eines Problems mitwidth/heightbei verschachtelten SVG-Elementen falsch. Übergangsweise muss man es mitsvg:where(:not(svg svg))behandelnDie
system-ui-Schrift ist nicht einfach nur ein Ersatz fürsans-serif. Wenn man System-UI-Fonts für den Fließtext verwendet, kann das auf manchen OS-/Sprachkombinationen fast unlesbar unbequem sein. Wenn mansans-serifbraucht, sollte mansans-serifverwendenDie Standard-Font-Größe ist etwas klein, etwa 18–20px (
1.25rem) sind angemessen. Auf kleinen Bildschirmen sollte man aber besser nicht über1remgehenAls Standard-
line-heightwerden oft 1.5–1.7 empfohlen, aber 1.7 ist auf kleinen Bildschirmen zu weit. 1.4–1.5 ist angemessen, und je nach Bildschirmgröße kann man bis etwa 1.4–1.6 anpassenfont-family: System UI;Das ist ein eindeutiger Syntaxfehler. Wenn man das Stylesheet prüft, sieht man das sofort
Es ist eine gute Idee, dunkles/helles System-Theme und Web-Theme voneinander zu trennen. Firefox ist standardmäßig so eingestellt, dass Inhalte dem System-Theme folgen, und das lässt sich auch separat anpassen
main { max-width: min(70ch, 100% - 4rem); margin-inline: auto; }Das bedeutet einen Mindestabstand von etwa
2rem(zusammen mit dem Standard-body-Margin also2rem + 8px). Das ist zu viel Abstand, und die Stelle, an der es angewendet wird, wirkt seltsam. Wenn man es aufmainanwenden will, ist es logischer, Padding zu verwenden, also etwaIn der Praxis brauchen aber auch
headerundfooterdenselben seitlichen Abstand, daher ist es besser, stattdessen denbody-Margin anzupassenDamit lässt sich der Rand von etwa 40px auf ungefähr 16px reduzieren