css mit Adi Prinz

Responsives Webdesign

Responsives Webdesign bezeichnet die Gestaltung und Entwicklung von Webseiten, die sich automatisch an unterschiedliche Bildschirmgrößen und Nutzungssituationen anpassen.

Eine responsive Webseite soll sowohl auf kleinen Smartphones als auch auf Tablets, Notebooks und großen Desktop-Bildschirmen gut lesbar und bedienbar bleiben. Dabei wird nicht für jedes Gerät eine eigene Webseite erstellt. Stattdessen passt sich ein gemeinsames Layout flexibel an den verfügbaren Platz an.

Responsives Webdesign orientiert sich nicht an bestimmten Geräten, sondern am verfügbaren Platz und am Inhalt der Webseite.

Ziele des responsiven Webdesigns

Responsives Webdesign soll unabhängig von der Bildschirmgröße ein möglichst gutes Benutzererlebnis ermöglichen.

  • Texte sollen ohne Vergrößerung gut lesbar sein.
  • Inhalte sollen nicht seitlich aus dem sichtbaren Bereich herausragen.
  • Navigationen und Bedienelemente sollen leicht erreichbar und bedienbar bleiben.
  • Bilder, Videos und andere Medien sollen sich an den verfügbaren Platz anpassen.
  • Layoutbereiche sollen je nach Platz nebeneinander oder untereinander dargestellt werden.
  • Die wichtigsten Inhalte und Funktionen sollen auf allen Geräten verfügbar bleiben.

Grundlagen eines responsiven Designs

Grundlage Beschreibung Typische Techniken
Flexibles Layout Breiten und Abstände passen sich an den verfügbaren Platz an. Prozentwerte, fr, Flexbox, Grid, min(), max() und clamp()
Responsive Medien Bilder, Videos und andere Medien überschreiten ihren verfügbaren Bereich nicht. max-width: 100%, height: auto, object-fit, picture und srcset
Media Queries CSS-Regeln werden abhängig von Eigenschaften des Viewports oder Geräts angewendet. @media (min-width: 48rem)
Mobile First Die Basisgestaltung wird für wenig verfügbaren Platz entwickelt und anschließend für größere Bereiche erweitert. Basis-CSS ohne Media Query und Erweiterungen mit min-width
Container Queries Eine Komponente reagiert auf die Größe ihres eigenen Containers und nicht nur auf die Größe des Viewports. container-type und @container

Responsive Gestaltungsebenen

Bei einem responsiven Design müssen mehrere Ebenen gemeinsam berücksichtigt werden.

Ebene Beispiele
Seitenstruktur Header, Navigation, Hauptinhalt, Seitenleiste und Footer
Layout Spalten, Reihen, Abstände und die Anordnung von Inhaltsbereichen
Typografie Schriftgröße, Zeilenlänge, Zeilenhöhe und Abstände
Medien Bilder, Videos, Grafiken und eingebettete Inhalte
Bedienung Navigationen, Schaltflächen, Formulare sowie Maus- und Tastaturbedienung
Benutzerpräferenzen Reduzierte Bewegung, Farbschema und erhöhter Kontrast

Breakpoints nach dem Inhalt festlegen

Ein Breakpoint ist eine Stelle, an der das Layout verändert wird. Breakpoints sollten nicht ausschließlich nach bekannten Gerätebreiten ausgewählt werden. Entscheidend ist, wann das vorhandene Layout nicht mehr ausreichend Platz besitzt.

Ein Breakpoint kann beispielsweise notwendig werden, wenn:

  • eine Navigation nicht mehr in eine Zeile passt,
  • Textspalten zu schmal oder zu breit werden,
  • Karten nicht mehr sinnvoll nebeneinander dargestellt werden können,
  • Bedienelemente zu eng beieinanderliegen,
  • oder wichtige Inhalte unübersichtlich werden.
Bezeichnungen wie „Smartphone“, „Tablet“ und „Desktop“ können bei der Orientierung helfen. Ein gutes responsives Layout richtet seine Breakpoints jedoch nach dem tatsächlichen Platzbedarf des Inhalts.

Responsive Design und Barrierefreiheit

Responsives Webdesign betrifft nicht nur die optische Darstellung. Die Seite muss auch bei vergrößerter Schrift, unterschiedlichen Eingabemethoden und individuellen Benutzereinstellungen bedienbar bleiben.

  • Inhalte dürfen bei Textvergrößerung nicht abgeschnitten werden.
  • Bedienelemente müssen ausreichend groß sein und genügend Abstand besitzen.
  • Die Reihenfolge der Inhalte muss auch bei verändertem Layout verständlich bleiben.
  • Funktionen dürfen nicht ausschließlich von Hover-Effekten abhängig sein.
  • Navigationen und Formulare müssen mit der Tastatur bedienbar bleiben.
  • Benutzerwünsche wie reduzierte Bewegung sollten berücksichtigt werden.

Typischer Arbeitsablauf

  1. Inhalte und semantische HTML-Struktur festlegen.
  2. Ein übersichtliches Basislayout für kleine verfügbare Breiten erstellen.
  3. Flexible Größen für Layout, Typografie und Medien verwenden.
  4. Das Layout langsam vergrößern und problematische Stellen beobachten.
  5. Nur dort Breakpoints ergänzen, wo der Inhalt eine Anpassung benötigt.
  6. Die Seite mit unterschiedlichen Bildschirmgrößen, Zoomstufen und Eingabemethoden testen.
Ein responsives Design entsteht nicht durch möglichst viele Media Queries, sondern durch flexible Grundlagen und gezielte Anpassungen.

Viewport

Der Viewport ist der sichtbare Bereich einer Webseite im Browser. Seine Größe hängt unter anderem vom verwendeten Gerät, der Größe des Browserfensters und der eingestellten Vergrößerung ab.

Auf Desktop-Computern entspricht der Viewport normalerweise dem Inhaltsbereich des Browserfensters. Auf Smartphones ist zusätzlich die richtige Viewport-Einstellung erforderlich, damit die tatsächliche Gerätebreite für das responsive Layout verwendet wird.

Das Viewport-Meta-Element

Das Viewport-Meta-Element wird im <head> des HTML-Dokuments eingefügt:

<meta
  name="viewport"
  content="width=device-width, initial-scale=1"
>
    

In einer vollständigen HTML-Datei befindet es sich beispielsweise an dieser Stelle:

<!DOCTYPE html>
<html lang="de">
<head>
  <meta charset="UTF-8">

  <meta
    name="viewport"
    content="width=device-width, initial-scale=1"
  >

  <title>Responsive Webseite</title>
</head>
<body>
  <h1>Responsive Webseite</h1>
</body>
</html>
    
Ohne eine passende Viewport-Einstellung können mobile Browser die Webseite mit einer größeren virtuellen Breite darstellen und anschließend verkleinern. Responsive Breakpoints würden dadurch nicht wie erwartet reagieren.

Bedeutung der Angaben

Angabe Bedeutung
name="viewport" Legt fest, dass sich das Meta-Element auf den Viewport bezieht.
width=device-width Setzt die Breite des Layout-Viewports auf die Breite des Geräts.
initial-scale=1 Legt für den ersten Seitenaufruf ein Skalierungsverhältnis von 1 fest.

Layout-Viewport und visueller Viewport

Bei mobilen Geräten kann zwischen zwei Viewport-Bereichen unterschieden werden.

Viewport Beschreibung
Layout-Viewport Der Bereich, den der Browser für die Berechnung des CSS-Layouts verwendet.
Visueller Viewport Der momentan tatsächlich sichtbare Bereich. Er kann sich beispielsweise durch Zoomen oder durch die eingeblendete Bildschirmtastatur verändern.

Für die meisten responsiven Layouts ist vor allem der Layout-Viewport entscheidend. Der visuelle Viewport wird insbesondere bei komplexen Benutzeroberflächen und eingeblendeten Bildschirmtastaturen wichtig.

Zoomen nicht einschränken

Benutzer müssen eine Webseite vergrößern können. Deshalb sollten Angaben, die das Zoomen verhindern oder stark einschränken, vermieden werden.

Ungünstige Einstellung

<meta
  name="viewport"
  content="
    width=device-width,
    initial-scale=1,
    maximum-scale=1,
    user-scalable=no
  "
>
    

Besonders die folgenden Angaben können die Vergrößerung einschränken:

  • user-scalable=no
  • maximum-scale=1
Die Zoomfunktion ist für viele Menschen notwendig, um Texte und Bedienelemente erkennen zu können. Sie sollte nicht deaktiviert werden.

Viewport-Einheiten

CSS stellt Einheiten bereit, die sich auf die Größe des Viewports beziehen.

Einheit Bedeutung
vw Ein Prozent der Breite des Viewports.
vh Ein Prozent der Höhe des Viewports.
vmin Ein Prozent der kleineren Viewport-Dimension.
vmax Ein Prozent der größeren Viewport-Dimension.
.hero {
  min-height: 100vh;
}

h1 {
  font-size: clamp(2rem, 5vw, 4rem);
}
    

Im Beispiel orientiert sich die Mindesthöhe des Hero-Bereichs an der Höhe des Viewports. Die Überschrift wächst abhängig von der Viewport-Breite, bleibt aber innerhalb der mit clamp() festgelegten Grenzen.

Dynamische Viewport-Einheiten

Auf mobilen Geräten können Browserleisten ein- und ausgeblendet werden. Dadurch kann sich die tatsächlich verfügbare Höhe während der Nutzung verändern. Für diesen Anwendungsfall stehen zusätzliche Viewport-Einheiten zur Verfügung.

Einheit Bedeutung
svh Bezieht sich auf die kleine Viewport-Höhe, bei der Browserleisten berücksichtigt werden.
lvh Bezieht sich auf die große Viewport-Höhe, bei der Browserleisten weitgehend ausgeblendet sind.
dvh Passt sich dynamisch an die aktuell verfügbare Viewport-Höhe an.
.fullscreen-section {
  min-height: 100vh;
  min-height: 100dvh;
}
    

Die erste Deklaration dient als Rückfalllösung. Browser, die dvh unterstützen, verwenden anschließend die dynamische Viewport-Höhe.

Breite Inhalte begrenzen

Ein responsives Layout soll den verfügbaren Platz nutzen. Auf sehr großen Bildschirmen sollten Textbereiche jedoch nicht unbegrenzt breit werden.

.page-wrapper {
  width: min(100% - 2rem, 75rem);
  margin-inline: auto;
}
    
  • 100% - 2rem lässt insgesamt zwei Rem Abstand zu den Seitenrändern.
  • 75rem begrenzt die maximale Breite des Inhalts.
  • margin-inline: auto zentriert den Bereich horizontal.

Zusammenfassung

  • Der Viewport ist der Bereich, für den der Browser das Layout berechnet und darstellt.
  • Das Viewport-Meta-Element gehört in den <head> jeder responsiven Webseite.
  • width=device-width verwendet die Gerätebreite als Grundlage des Layout-Viewports.
  • initial-scale=1 legt die anfängliche Skalierung fest.
  • Die Zoomfunktion darf nicht durch ungeeignete Viewport-Angaben eingeschränkt werden.
  • Dynamische Einheiten wie dvh berücksichtigen veränderliche Browseroberflächen auf mobilen Geräten.
Mit einer korrekten Viewport-Einstellung ist die wichtigste technische Voraussetzung für ein responsives Layout erfüllt.