Was Responsive Design technisch ist
Den Begriff prägte der Designer Ethan Marcotte in einem Artikel, der am 25. Mai 2010 bei A List Apart erschien. Dort definierte er die drei technischen Säulen: flexible Grids, flexible Bilder und Media Queries. Vor diesem Artikel existierte jedes dieser Mittel für sich. Marcotte war derjenige, der sie zu einem einzigen Gestaltungsansatz für ein Web mit vielen unterschiedlichen Geräten zusammenführte.
Responsive Design ist eine Entwicklungstechnik: dasselbe HTML-Dokument, ohne doppelten Code und ohne eigene Version pro Gerät, ändert seine Darstellung je nach Bildschirmbreite über CSS-Regeln. Der Browser lädt dieselbe Seite, egal ob am Smartphone oder am Desktop-Rechner geöffnet. Was sich ändert, ist die Anordnung des Inhalts, nicht der Inhalt selbst.
Das zentrale Werkzeug sind Media Queries, CSS-Regeln, die einen Stilblock nur dann anwenden, wenn eine Bedingung erfüllt ist, meist die Fensterbreite. Die Punkte, an denen sich das Layout ändert, heißen Breakpoints. Dazu kommen flexible Grids (mit Flexbox oder CSS Grid, die verfügbaren Platz in Anteilen statt in festen Pixeln verteilen) und fließende Bilder, die sich ohne Überlauf an ihren Container anpassen.
Breakpoints am Inhalt auszurichten statt an bestimmten Geräten liefert meist bessere Ergebnisse, als sich an konkreten Smartphone- oder Tablet-Breiten zu orientieren: Ein Gerätekatalog, der sich jedes Jahr ändert, macht jeden Breakpoint schnell veraltet, der für ein bestimmtes Gerät gedacht war. Ein Breakpoint dagegen, der genau dort sitzt, wo das Layout selbst zu kippen beginnt, ein Menü das sich staucht oder ein Text der zu schmal wird, funktioniert weiter, egal welche Geräte gerade auf dem Markt sind.
Ein einfaches Beispiel: ein Bild in voller Breite auf dem Smartphone und ein horizontales Menü ab Tablet-Breite, beides definiert im selben Stylesheet.
<style>
.menu {
display: block; /* gestapelt, Standard für Smartphone */
}
img {
max-width: 100%;
height: auto;
}
@media screen and (min-width: 768px) {
.menu {
display: flex; /* horizontal ab Tablet/Desktop */
}
}
</style>
Damit der mobile Browser dieses Verhalten überhaupt respektiert, braucht es zusätzlich den Viewport-Tag im head des Dokuments. Er wird häufig vergessen: ohne ihn rendert das Smartphone die Seite wie eine Desktop-Version und skaliert sie danach herunter, wodurch die Media Queries wirkungslos bleiben.
<meta name="viewport" content="width=device-width, initial-scale=1" />
Dieser Tag stammt ursprünglich nicht von einem offiziellen Web-Standard, sondern von Apple: Er wurde mit dem Safari-Browser des ersten iPhones eingeführt, damit Websites, die für Desktop-Breiten gebaut waren, sich auf dem kleinen Bildschirm sinnvoll darstellen ließen. Andere mobile Browser übernahmen die gleiche Syntax später als De-facto-Standard, weshalb sie bis heute funktioniert, obwohl sie nie förmlich in einer W3C-Spezifikation verankert wurde.
