Start · Sprachen · JavaScript · Referenz · Screen.width

Screen.width

Eigenschaft

Die schreibgeschützte Eigenschaft <code>Screen.width</code> gibt die Breite des gesamten Bildschirms in CSS-Pixeln zurück.

seit JavaScript Baseline: alle Browser Kategorie: webapi

Signatur

Screen.width

Beschreibung

screen.width liefert die Breite des Bildschirms, auf dem das Browserfenster gerade angezeigt wird. Der Wert ist in CSS-Pixeln angegeben, nicht in physischen Gerätepixeln. Auf einem 4K-Monitor mit 200 % Skalierung liefert screen.width daher 1920 und nicht 3840.

Der Wert beschreibt den gesamten Bildschirm, also auch Bereiche, die Taskleiste, Dock oder Menüleiste belegen. Den tatsächlich für Fenster nutzbaren Bereich liefert screen.availWidth. Die Breite des Browserfensters bzw. Viewports erhält man über window.innerWidth oder document.documentElement.clientWidth.

Praktisch nützlich ist die Eigenschaft für Statistik und Analytics, zum Positionieren von Popup-Fenstern mit window.open() oder zur groben Einschätzung der Geräteklasse. Für responsives Layout sind CSS-Media-Queries bzw. window.matchMedia() fast immer die bessere Wahl, weil sie sich auf den Viewport beziehen und auf Änderungen reagieren.

Rückgabewert

Typ
number
Beschreibung
Ganzzahlige Bildschirmbreite in CSS-Pixeln. Die Eigenschaft ist schreibgeschützt; Zuweisungen werden stillschweigend ignoriert.

Beispiele

Bildschirmgröße und physische Auflösung ausgeben

const { width, height } = screen;
const dpr = window.devicePixelRatio;

console.log(`Bildschirm (CSS-Pixel): ${width} × ${height}`);
console.log(`Physisch ca.: ${Math.round(width * dpr)} × ${Math.round(height * dpr)}`);
Bildschirm (CSS-Pixel): 1920 × 1080 Physisch ca.: 3840 × 2160

Popup-Fenster horizontal zentrieren

const openCentered = (url, w = 600, h = 500) => {
  // availWidth/availHeight berücksichtigen Taskleiste & Dock
  const left = Math.max(0, (screen.availWidth - w) / 2);
  const top = Math.max(0, (screen.availHeight - h) / 2);
  return window.open(url, 'login', `width=${w},height=${h},left=${left},top=${top}`);
};

document.querySelector('#login')?.addEventListener('click', () => {
  openCentered('/oauth/start');
});

Bildschirm vs. Viewport vergleichen

const info = {
  bildschirm: screen.width,
  verfuegbar: screen.availWidth,
  fenster: window.outerWidth,
  viewport: window.innerWidth
};
console.table(info);

if (window.innerWidth < screen.width * 0.5) {
  console.log('Fenster nutzt weniger als die halbe Bildschirmbreite.');
}
┌────────────┬────────┐ │ bildschirm │ 1920 │ │ verfuegbar │ 1920 │ │ fenster │ 960 │ │ viewport │ 945 │ └────────────┴────────┘ Fenster nutzt weniger als die halbe Bildschirmbreite.

Metriken für Analytics erfassen

const collectDisplayMetrics = () => ({
  screenWidth: screen.width,
  screenHeight: screen.height,
  pixelRatio: window.devicePixelRatio,
  orientation: screen.orientation?.type ?? 'unbekannt'
});

navigator.sendBeacon('/metrics', JSON.stringify(collectDisplayMetrics()));

// Wichtig · Fallstricke

  • Nicht für responsives Layout verwenden: screen.width ändert sich nicht, wenn der Nutzer das Fenster verkleinert. Nutzen Sie stattdessen Media-Queries, window.matchMedia(), window.innerWidth oder ResizeObserver.
  • CSS-Pixel statt Gerätepixel: Für die physische Auflösung multipliziert man mit window.devicePixelRatio. Durch Skalierung kann das Ergebnis leicht vom tatsächlichen Wert abweichen.
  • Zoom und Mobilgeräte: Einige Browser (vor allem ältere Mobilbrowser und Firefox beim Seitenzoom) liefern abweichende Werte. Unter iOS Safari bezieht sich der Wert bei Drehung des Geräts traditionell auf die Hochformat-Breite, er wird also nicht mit der Ausrichtung vertauscht.
  • Mehrere Monitore: Der Wert bezieht sich auf den Bildschirm, auf dem sich das Fenster gerade befindet. Details zu allen Bildschirmen liefert die Window Management API (window.getScreenDetails(), derzeit nur in Chromium).
  • Datenschutz/Fingerprinting: Die Bildschirmgröße ist ein bekanntes Fingerprinting-Merkmal. Firefox mit privacy.resistFingerprinting, der Tor Browser und Brave können gerundete oder gefälschte Werte (z. B. die Viewport-Größe) zurückgeben.
  • Die Unterstützung ist in allen Browsern seit jeher vorhanden.