Zum Inhalt springen

Design

Responsives Design und das Viewport: Was Ihr Handy sieht vs. was Ihr Laptop sieht

10 Min. Lesezeit

Eine Seite, die auf Ihrem Laptop perfekt aussieht, wurde wahrscheinlich für einen 1440px-Laptop entworfen. Öffnen Sie sie auf einem 375px-iPhone und Sie verstehen, warum das Viewport-Meta-Tag existiert: Ohne es rendert der Browser die gesamte Seite bei 1440 Pixel Breite, schrumpft sie, um auf den Bildschirm zu passen, und liefert eine Seite so winzig, dass man pinch-zoomen muss, um etwas zu lesen. Das Viewport ist das Browserfenster auf Ihre Seite, und es zu steuern ist der wichtigste erste Schritt im responsiven Design.

Was das Viewport eigentlich ist

Das Viewport ist nicht der physische Bildschirm. Es sind die inneren Abmessungen des Browserinhaltsbereichs — der Teil, der Ihr HTML und CSS tatsächlich anzeigt, ausgeschlossen Scrollleisten, Browserchrome und Betriebssystemoberfläche. Im Desktop-Browser stimmt das Viewport typischerweise mit der Fenstergröße überein; auf einem Handy stimmt es mit den CSS-Pixelabmessungen des Geräts überein, nicht mit der Hardware-Pixelanzahl.

Diese Unterscheidung zwischen CSS-Pixeln und Hardware-Pixeln ist genau der Punkt, an dem devicePixelRatio ins Spiel kommt. Ein modernes iPhone 15 meldet ein CSS-Viewport von 393x852 Punkten, aber der Bildschirm hat 1179x2556 physische Pixel — eine devicePixelRatio von 3. Das bedeutet, jedes CSS-Pixel belegt einen 3x3-Block aus Hardware-Pixeln und erzeugt scharfen Text und klare Kanten. Sie müssen das nicht direkt verwalten; Browser und Betriebssystem übernehmen die Zuordnung. Aber es erklärt, warum ein 375px-CSS-Viewport kein niederauflösender Bildschirm ist.

Das Viewport-Meta-Tag und was es steuert

Das Viewport wird mit einem einzigen HTML-Element konfiguriert, das in den <head> -Tag kommt:

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

Die beiden kritischen Anweisungen sind width=device-width und initial-scale=1. Die erste sagt dem Browser: Setze die CSS-Viewport-Breite auf die Bildschirmbreite des Geräts in CSS-Pixeln, anstatt bei einer Standardbreite von 980px Desktop zu rendern. Die zweite fixiert den Zoom auf 100% beim Laden, damit der Inhalt nicht automatisch vergrößert oder verkleinert wird.

Ohne dieses Tag rendern mobile Browser Seiten, als wären sie auf einem Desktop. Safari auf iOS verwendete historisch eine 980px-Layout-Viewport-Breite und skalierte sie herunter, um auf den Bildschirm zu passen. Das Ergebnis: Text, den man nur nach Pinch-Zoom lesen kann, Tip-ziele, die zu klein zum Antippen sind, und Formulare, die man heranzoomen muss. Jedes moderne CSS-Framework — Bootstrap, Tailwind, Foundation — enthält dieses Tag standardmäßig, weshalb das Problem verschwunden zu sein scheint. Aber wenn Sie von Null an bauen und das Tag vergessen, entdecken Sie es sofort wieder.

CSS-Breakpoints: Konventionen, keine Gesetze

Ein Media-Query-Breakpoint ist eine CSS-Breite, bei der sich Ihr Layout ändert. Die am häufigsten verwendeten Werte sind 640px, 768px, 1024px und 1280px. Diese haben sich gehalten, weil sie ungefähr den realen Gerätekategorien entsprechen:

BreakpointCSS-BreiteTypisches ZielgerätLayout-Änderung
sm640pxGroße Handys (iPhone 14, Galaxy S23)Einfache Spalte wird etwas breiter
md768pxiPads im Hochformat, kleine TabletsSeitenleiste erscheint oder Gitter wechselt zu zwei Spalten
lg1024pxiPad im Querformat, kleine LaptopsVolles Navigationslayout, dreispaltiges Gitter
xl1280pxStandard-Laptops und DesktopsInhalts-Maximalbreite, großzügiger Innenabstand

Diese Zahlen sind Konventionen, die aus Tailwinds Standardkonfiguration stammen, und passen gut zu den Geräten, die die meisten Menschen besitzen. Aber sie werden von keiner Spezifikation vorgegeben. Ihr Layout sollte auf den Inhalt reagieren, den es enthält: Wenn eine Kartenkomponente bei 790px seltsam umbricht, setzen Sie Ihren Breakpoint dort. Der Zweck von Breakpoints ist es, den Inhalt bei jeder Breite lesbar und das Layout bewusst zu halten, keine runden Zahlen zu treffen.

/* Mobile First: Basisstile sind für Handys */
.container {
  padding: 1rem;
}

/* Tablet und größer */
@media (min-width: 768px) {
  .container {
    padding: 2rem;
    max-width: 720px;
    margin: 0 auto;
  }
}

/* Desktop und größer */
@media (min-width: 1280px) {
  .container {
    max-width: 1200px;
  }
}

Mobile First: Warum es besser funktioniert

Der Mobile-First-Ansatz schreibt die Basis-CSS für kleine Bildschirme und fügt mit min-width Media-Queries Komplexität hinzu, wenn der Bildschirm wächst. Die Alternative — Desktop First — beginnt mit einem Layout in voller Breite und verwendet max-width um Funktionen auf kleineren Bildschirmen zu entfernen. Mobile First wird bevorzugt, weil es leichteres, schnelleres und wartbares CSS produziert.

Der Grund ist schrittweise Verbesserung. Ein Handy, das ein Mobile-First-Stylesheet lädt, bekommt nur das CSS, das es braucht: weniger Gitterregeln, keine Desktop-Navigations-Overrides, kleinere Bildladungen. Ein Desktop, der dasselbe Stylesheet lädt, bekommt die Basisstile plus die Media-Query-Zusätze. Bei Desktop First muss das Handy das gesamte Desktop-CSS laden und dann zusätzliche Regeln laden, um das rückgängig zu machen, was es nicht braucht. Das Ergebnis: mehr Bytes, langsameres Rendern auf langsamen Verbindungen und eine höhere Wahrscheinlichkeit von Spezifitätskonflikten.

Es gibt auch einen Debugging-Vorteil: Wenn etwas bei 1440px kaputt aussieht, wissen Sie genau, welche Media-Query Sie untersuchen müssen. Wenn etwas bei 375px in einem Desktop-First-Ansatz kaputt aussieht, könnte das Problem in den Basis-Stilen, dem 768px-Override, dem 1024px-Override oder dem 1280px-Override liegen. Mobile First bedeutet, dass kleine Bildschirme immer die einfachste Version anzeigen.

px vs rem vs em: Wann jede Einheit wichtig ist

CSS bietet drei Einheitensysteme zum Größenbestimmen von Elementen, jedes für einen anderen Zweck:

  • px (Pixel): Absolute Einheiten, die an CSS-Pixel gebunden sind, nicht an Hardware-Pixel. Verwenden Sie sie für Rahmenbreiten (1px solid), Schatten und alles, was unabhängig von der benutzerdefinierten Schriftgröße gleich groß bleiben soll. Verwenden Sie kein px für Schriftgrößen in einem responsiven Layout — es untergräbt den Zweck skalierbarer Typografie.
  • rem (Root em): Bezogen auf die Schriftgröße des Root-Elements, die in jedem Browser standardmäßig 16px beträgt. Wenn Sie 1rem = 16px im Kopf behalten, sind Umrechnungen einfach: 1.5rem = 24px, 2rem = 32px. Jeder rem-Wert skaliert zusammen, wenn Sie die Root-Größe ändern. Deshalb ist rem der Standard für responsive Schriftgrößen, Innenabstände und Außenabstände im modernen CSS.
  • em: Bezogen auf die Schriftgröße des Elements selbst. Das Problem: em vermehrt sich. Ein h2 mit font-size: 2em in einem Elternteil mit 16px Basis wird zu 38.4px (16 × 1.2 × 2). Dieses Verschachtelungsverhalten macht em für Abstände unvorhersehbar, aber nützlich für Größen, die absichtlich mit Text skalieren sollen, wie Icon-Abmessungen neben Beschriftungen.
EinheitBezugVermehrt sich?Beste Verwendung
pxCSS-Pixel (absolut)NeinRahmen, Schatten, dünne Linien
remRoot-Schriftgröße (16px Standard)NeinSchriftgrößen, Innenabstände, Außenabstände
emElternteil- oder Eigene SchriftgrößeJaIcon-Größen neben Text, Zeilenhöhe

Eine praktische Regel: Verwenden Sie rem für alles, was mit dem Gesamtlayout skalieren soll, px für das, was nicht skalieren soll, und em nur, wenn Sie absichtlich wollen, dass ein Wert mit dem umgebenden Text wächst. Wenn Sie in einem responsiven Design sehen, dass Innenabstände bei Breakpoints unerwartet springen, ist der Übeltäter fast immer em-basierter Abstand innerhalb einer Schriftgrößenänderung.

Häufige Fallstricke, die responsives Layout zerstören

Responsives Design wirkt einfach, bis Grenzfälle auftauchen. Das sind die Fallstricke, die Entwickler jeder Erfahrungsstufe treffen:

  • Fixe Pixelbreiten auf Containern: width: 960px auf einen Wrapper zu setzen, erzeugt eine harte Grenze. Auf einem 768px-Tablet überläuft der Container und löst horizontales Scrollen aus. Verwenden Sie stattdessen max-width mit Prozent- oder rem-Werten — das Layout kann immer schrumpfen.
  • 100vw Scrollleisten-Überlauf: Die Einheit 100vw bedeutet 100% der Viewport-Breite einschließlich einer vertikalen Scrollleiste. Auf einer Seite mit scrollbarem Inhalt verursacht dies einen horizontalen Überlauf von etwa 15-17px (der Scrollleisten-Breite). Verwenden Sie stattdessen 100% am Body oder einem Wrapper — es schließt die Scrollleiste aus.
  • Zu kleine Schriftgrößen auf Mobil: Eine body font-size von 14px oder 16px sieht auf dem Desktop gut aus, kann sich aber auf Handys, besonders beim längeren Lesen, geengt anfühlen. Die Lösung ist nicht, Desktop-Text zu vergrößern, sondern die mobile Basis etwas höher zu setzen (z.B. 16-18px) und Desktop-Breakpoints bei Bedarf über rem-Verhältnisse verkleinern zu lassen. Apple empfiehlt mindestens 11pt (ca. 14.6px) für Lesbarkeit.
  • Bilder ohne Größenbeschränkung: Ein Bild mit fester Breite oder ohne Beschränkung drängt an seinem Container vorbei. Wenden Sie max-width: 100%; height: auto; auf alle Inhaltsbilder an, damit sie mit ihrem Elternteil schrumpfen.
  • Versteckter Überlauf kaschiert echte Probleme: Auf einem Elternteil overflow: hidden anzuwenden, um horizontales Scrollen zu verstecken, ist eine Symptombehandlung. Das Layout ist immer noch kaputt, Sie können es nur nicht sehen. Verwenden Sie den responsiven Inspektor Ihres Browsers, um das Element zu finden, das den Überlauf verursacht.

Die 100vw-Falle ist der häufigste Responsive-Fehler

Entwickler setzen einen Vollbreiten-Hero-Bereich auf width: 100vw und erwarten, dass er den Bildschirm füllt. Auf jeder Seite mit sichtbarer Scrollleiste ist der Hero etwas breiter als das Viewport und erzeugt horizontales Scrollen. Das richtige Muster ist width: 100% auf einem Container innerhalb des Body, der die Scrollleiten-Breite natürlich ausschließt.

Wie Entwickler responsives Design wirklich testen

Das Testen von responsivem Design erfordert die Simulation verschiedener Viewport-Größen. Entwickler verwenden drei Hauptansätze:

  • Browser DevTools Geräte-Toolbar: Chrome, Firefox und Safari bieten alle einen responsiven Modus (Strg+Umschalt+M in Chrome), in dem Sie jede Viewport-Breite und Höhe eingeben, aus Gerätevorgaben wählen und Geräteemulation einschließlich Touch-Ereignissen, User-Agent-Strings und Pixeldichte umschalten können. Das ist der schnellste Weg, Layout-Fehler zu finden — Sie ändern die Breite und beobachten, was schiefgeht.
  • Echte Geräte: Emulatoren sind nicht perfekt. Touch-Verhalten, Schriftwiedergabe, Scroll-Momentum und virtuelle Tastaturen unterscheiden sich auf echter Hardware. Das Testen auf mindestens einem iPhone und einem Android-Handy fängt Probleme, die Emulatoren verpassen, insbesondere rund um Safe-Area-Insets (Notch und abgerundete Ecken) und die Gummiband-Scrolling von iOS Safari.
  • Responsives Viewport-Tools: Online-Tools zeigen Ihnen, welche Viewport-Abmessungen Ihr Browser aktuell meldet, vergleichen sie mit gängigen Gerätevorgaben und erklären den Unterschied zwischen CSS-Pixeln und physischen Pixeln. Das ist besonders nützlich, um herauszufinden, warum ein Design in DevTools korrekt aussieht, aber auf einem echten Gerät leicht anders — die Antwort ist oft devicePixelRatio.

An jedem Breakpoint testen, nicht nur an den Enden

Prüfen Sie nicht nur 375px und 1440px. Die meisten Layout-Fehler treten in den Lücken zwischen Breakpoints auf — bei 680px, wenn eine Seitenleiste noch nicht eingeklappt ist, oder bei 900px, wo ein Gitterelement seltsam gestreckt wird. Ändern Sie langsam die Breite über den gesamten Bereich und beobachten Sie Elemente, die überlaufen, überlappen oder die Ausrichtung verlieren.

Responsive-Werkzeuge in Convrs

Convrs enthält zwei Werkzeuge, die Ihnen helfen, Viewport-Verhalten zu verstehen und zu testen: der Bildschirm- und Viewport-Checker zeigt die aktuellen Viewport-Abmessungen Ihres Browsers, die devicePixelRatio und einen Vergleich mit gängigen Gerätevorgaben — nützlich, um zu verstehen, warum ein Design auf Ihrem Rechner anders aussieht als auf dem Telefon eines Kunden, und der px-rem-em-Konverter übersetzt sofort zwischen CSS-Pixel-Einheiten, rem- und em-Werten bei jeder Root-Schriftgröße. Beide Werkzeuge laufen vollständig in Ihrem Browser, keine Daten verlassen Ihr Gerät.

Buy me a coffee