8

我知道它是用純CSS可以根據屏幕尺寸相適應的樣式,像這樣:CSS響應式設計 - 檢測縱向顯示

@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

是它純css可以檢查橫向或縱向顯示嗎?

回答

10

是,使用的語法如下:

@media all and (orientation: landscape) {} 

更多信息,請參見w3 specs

+0

謝謝!小的後續問題:當有人傾斜他的手機屏幕以便改變方向時會發生什麼?應用的CSS會改變嗎? – Keelan 2013-05-04 11:55:41

+0

我還沒有檢查自己,但我很確定這是因爲其他媒體查詢(如屏幕寬度)重新檢查。 – mogelbrod 2013-05-05 11:02:34

+0

好的,謝謝所有這些! – Keelan 2013-05-05 11:03:04

2

w3

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

您可以使用orientation

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

所有的答案是不正確的。顯示鍵盤時,Android將從縱向切換到橫向。

不同的鍵盤也需要測試,因爲它們可以佔用更多的垂直空間。 Swift鍵盤佔用更多的垂直空間,所以你不能使用像@media屏幕和(min-aspect-ratio:13/9)這樣的解決方案{/ *這裏的風景風格* /},因爲這會在很多手機上失效。

唯一的解決方案是使用JavaScript。

在較新的Android設備上,您可以測試並使用新的window.screen.orientation api。

在iOS上,你可以使用window.orientation,它工作正常。即Math.abs(window.orientation)=== 90是風景

作爲後備,你可以使用window.screen.width> window.screen.height,它將覆蓋真正舊的Android設備,不支持新窗口.screen.orientation api

然後,您只需在resize/orientationchange事件上添加/刪除類。

+0

你能否提供一些支持你答案的例子/研究? – kingJulian 2018-03-07 16:16:06

+0

以下是鍵盤出現時斷點觸發的問題。 https://stackoverflow.com/questions/8883163/css-media-query-soft-keyboard-breaks-css-orientation-rules-alternative-solut/8883535 – Matt 2018-03-08 16:40:37