8

Wiem, że to z czystym CSS można dostosować stylów w zależności od wymiarów ekranu, tak:CSS reaguje design - wykryć wyświetlacz portret

@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)

jest z czystego css można sprawdzić na wyświetlaczu krajobrazowym lub portretowym?

Odpowiedz

10

Tak, używając następującej składni:

@media all and (orientation: landscape) {} 

Patrz w3 specs aby uzyskać więcej informacji.

+0

Dzięki! Małe pytanie uzupełniające: co się stanie, gdy ktoś przechyli ekran telefonu, aby zmienić orientację? Czy zastosowany CSS się zmieni? – Keelan

+0

Nie sprawdzałem siebie, ale jestem prawie pewien, że tak jest, ponieważ inne zapytania o media (takie jak i szerokość ekranu) są ponownie sprawdzane. – mogelbrod

+0

Okay, dzięki za to wszystko! – Keelan

2

Od w3:

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

Można użyć orientation:

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

Wszystkie odpowiedzi są błędne. Android zmieni się z portretu na krajobraz po wyświetleniu klawiatury.

Różne klawiatury wymagają również testów, ponieważ mogą zająć więcej miejsca w pionie. Klawiatura Swift zajmuje więcej miejsca w pionie, więc nie można używać takich rozwiązań, jak ekran @media i (min. Współczynnik proporcji: 13/9) {/ * style krajobrazu tutaj * /}, ponieważ nie będzie to możliwe na wielu telefonach.

Jedynym rozwiązaniem jest użycie javascript.

Na nowszych urządzeniach z Androidem można testować i używać nowego interfejsu api okna window.screen.orientation.

W systemie iOS można użyć window.orientation, które działa poprawnie. tj. Math.abs (window.orientation) === 90 to pejzaż

Jako awarię można użyć window.screen.width> window.screen.height, która obejmie naprawdę stare urządzenia z Androidem, które nie obsługują nowego okna .screen.orientation api

Wszystko co musisz zrobić, to dodać/usunąć zajęcia podczas zmiany rozmiaru/orientacji wydarzeń.

+0

Czy możesz podać przykłady/badania na poparcie swojej odpowiedzi? – kingJulian

+0

Oto problemy z punktami przerwania uruchamianymi po wyświetleniu klawiatury. https://stackoverflow.com/questions/8883163/css-media-query-soft-keyboard-breaks-css-orientation-rules-alternative-solut/8883535 – Matt

Powiązane problemy