Signatur
Beschreibung
window.orientation ist eine schreibgeschützte, veraltete Eigenschaft, die angibt, um wie viel Grad der Viewport gegenüber der natürlichen Ausrichtung des Geräts gedreht ist. Mögliche Werte sind 0 (natürliche Ausrichtung, bei Smartphones meist Hochformat), 90 (gegen den Uhrzeigersinn gedreht, Querformat), -90 (im Uhrzeigersinn gedreht, Querformat) und 180 (auf dem Kopf stehend, wird von vielen Geräten nicht gemeldet).
Die Eigenschaft stammt aus der Anfangszeit des mobilen Webs (iOS Safari) und wurde zusammen mit dem Event orientationchange genutzt, um Layouts beim Drehen des Geräts anzupassen. Sie war nie Teil eines regulären Standards, sondern wird nur im Kompatibilitätsstandard beschrieben. Desktop-Browser wie Chrome und Firefox auf dem Desktop liefern undefined.
Für neuen Code sollte stattdessen die Screen Orientation API (screen.orientation.angle und screen.orientation.type) oder – für reine Layout-Fragen – eine Media Query wie (orientation: portrait) über window.matchMedia() verwendet werden. window.orientation ist nur noch als Fallback für alte iOS-Versionen (vor iOS 16.4) sinnvoll.
Rückgabewert
0, 90, -90 oder 180. In Browsern ohne Unterstützung undefined.Beispiele
Aktuelle Ausrichtung auslesen (mit Feature-Erkennung)
const getAngle = () => {
// Moderne API bevorzugen, alte Eigenschaft nur als Fallback
if (screen.orientation && typeof screen.orientation.angle === 'number') {
return screen.orientation.angle;
}
if (typeof window.orientation === 'number') {
// window.orientation liefert -90 statt 270
return (window.orientation + 360) % 360;
}
return 0;
};
console.log(`Drehung: ${getAngle()}°`);
Hoch- oder Querformat bestimmen
const isLandscape = () => {
if (typeof window.orientation === 'number') {
return Math.abs(window.orientation) === 90;
}
// Fallback über Media Query
return window.matchMedia('(orientation: landscape)').matches;
};
document.body.classList.toggle('landscape', isLandscape());
console.log(isLandscape() ? 'Querformat' : 'Hochformat');
Auf Drehung reagieren (alt und modern)
const update = () => {
const angle = screen.orientation?.angle ?? window.orientation ?? 0;
console.log('Neue Ausrichtung:', angle);
};
if (screen.orientation) {
screen.orientation.addEventListener('change', update);
} else {
// Veraltetes Event, z. B. für iOS < 16.4
window.addEventListener('orientationchange', update);
}
// Wichtig · Fallstricke
- Veraltet: Nicht für neuen Code verwenden. Ersatz:
screen.orientation.angle/screen.orientation.typeodermatchMedia('(orientation: portrait)'). - Kompatibilität: Nur in mobilen Browsern verfügbar (Safari iOS, Chrome/Samsung Internet auf Android). Desktop-Browser und Firefox liefern meist
undefined– immer mittypeof window.orientation === 'number'prüfen. - Wertebereich: Im Uhrzeigersinn gedreht ergibt
-90, nicht270wie beiscreen.orientation.angle. Beim Umrechnen(wert + 360) % 360verwenden. - Natürliche Ausrichtung:
0bedeutet nicht zwingend Hochformat – bei vielen Tablets ist die natürliche Ausrichtung das Querformat. - Der Wert
180wird auf vielen Smartphones nie gemeldet, da das Betriebssystem die Kopfüber-Drehung unterdrückt. - Beim
orientationchange-Event sindinnerWidth/innerHeightteilweise noch nicht aktualisiert; für Maßangaben besser aufresizereagieren.