8

ich weiß, dass es mit reinem CSS möglich, das Stylesheet nach Bildschirmabmessungen anzupassen, wie folgt aus:CSS Responsive Design - erkennen Portrait-Anzeige

@media (max-width: 959px) { 
    /* styles for smallest viewport widths */ 
} 

@media (min-width: 600px) and (max-width: 959px) { 
    /* styles for mid-tier viewport widths */ 
} 

@media (min-width: 960px) { 
    /* original CSS styles */ 
} 

(source)

Ist es mit rein css möglich, auf einem Querformat oder Hochformat zu überprüfen?

Antwort

10

Ja, mit folgenden Syntax:

@media all and (orientation: landscape) {} 

Siehe w3 specs für weitere Informationen.

+0

Danke! Kleine Folgefrage: Was passiert, wenn jemand seinen Handybildschirm neigt, so dass sich die Ausrichtung ändert? Ändert sich das angewandte CSS? – Keelan

+0

Ich habe mich selbst nicht überprüft, aber ich bin ziemlich sicher, dass dies der Fall ist, da andere Medienabfragen (wie z. B. Bildschirmbreite) erneut überprüft werden. – mogelbrod

+0

Okay, danke für alles! – Keelan

2

Von w3:

@media all and (orientation:portrait) { … } 
@media all and (orientation:landscape) { … } 
3

können Sie orientation verwenden:

@media all and (max-width: 959px) and (orientation : portrait) { 
    /* Styles */ 
} 
0

Alle Antworten sind falsch. Android wechselt von Porträt zu Landschaft, wenn die Tastatur angezeigt wird.

Verschiedene Tastaturen müssen ebenfalls getestet werden, da sie mehr vertikalen Platz einnehmen können. Swift-Tastatur nimmt mehr vertikalen Platz ein, so dass Sie keine Lösungen wie @media-Bildschirm und (min-aspect-ratio: 13/9) {/ * Landschaftsstile hier * /} verwenden können, da dies auf vielen Telefonen fehlschlagen wird.

Die einzige Lösung ist die Verwendung von Javascript.

Auf neueren Android-Geräten können Sie die neue window.screen.orientation API testen und verwenden.

Auf iOS können Sie window.orientation verwenden, die gut funktioniert. dh Math.abs (window.orientation) === 90 ist Landschaft

Und als Fallback können Sie window.screen.width> window.screen.height verwenden, die wirklich alte Android-Geräte abdecken, die das neue Fenster nicht unterstützen .screen.orientation api

Dann müssen Sie nur noch eine Klasse hinzufügen oder entfernen, die auf resize/orientationchange -Ereignissen basiert.

+0

Können Sie bitte einige Beispiele/Nachforschungen zur Unterstützung Ihrer Antwort geben? – kingJulian

+0

Hier sind die Probleme mit den Breakpoints, die ausgelöst werden, wenn die Tastatur erscheint. https://stackoverflow.com/questions/8883163/css-media-query-soft-keyboard-breaks-css-orientation-rules-alternative-solut/8883535 – Matt