明天就要開搶 iPhone X 了,然而面對 iPhone X 這個奇葩的螢幕,你準備好了嗎?
因為 iPhone X 的劉海設計,Web 在 iPhone X
橫屏
時,可能會有些問題:- 預設情況,iPhone X 會將頁面填充到安全區域(safe area),就像上面的圖一樣,一般情況下是沒有問題的;
- 但如果是全屏 Web App 就會有問題了,比如背景色和頁面的契合程度之類的;
- 有的 iOS app 內建 WKwebview 可能會為了避免一些bug,而採用統一的行為,就是禁用 iOS 11 自己的內容區域判斷,從而讓 H5 預設全屏,如下圖:
解決方案
1. 預設全屏
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover">
複製程式碼
在 viewport 的 meta 屬性中,新增 viewport-fit=cover
即可。
viewport-fit 預設值為 auto/contain
,全屏值為cover
,是不是感覺很熟悉?嗯,和 background-size
以及 object-fit
一樣的。
2. 設定頁面邊距為安全區域邊距
body{
padding:
constant(safe-area-inset-top)
constant(safe-area-inset-right)
constant(safe-area-inset-bottom)
constant(safe-area-inset-left);
}
複製程式碼
嗯,constant()
以及 safe-area-inset-top
safe-area-inset-right
safe-area-inset-bottom
safe-area-inset-left
是 iOS 11 webview 新增加的特性,專門用於應對劉海的。。。
當然,這裡的padding
只是用於匹配iPhone X預設的安全區域的,你可以設定任何值,不過建議要不小於預設的安全區域值。
當前版本,橫屏時,各屬性的值:
safe-area-inset-top = 0
safe-area-inset-right = 44px
safe-area-inset-bottom = 21px
safe-area-inset-left = 44px
複製程式碼
豎屏時各值都是 0,但豎屏時需要特別留意 status-bar(44px) 和 home-indicator(34px)。