首先需要為meta
標籤加上viewport-fit=cover
,預設viewport-fit=contain
,跟background-size
類似。
當值設定為cover
既可讓安全區域鋪滿全屏,就跟適配其他裝置沒什麼區別了。
但是內容會被頂部和底部的硬體遮擋,如果不想被遮擋,就需要頭部底部預留一定高度。
所以就需為body加上padding,官方提供了四個值,可以直接獲取到頭部底部以及橫屏時候的左側右側值,我們只需要在自己的容器設定上著四個值即可:constant-top: (safe-area-inset-top)
padding-left: constant(safe-area-inset-left)
padding-right: constant(safe-area-inset-right)
padding-bottom: constant(safe-area-inset-bottom)
- 需要注意的是,
viewport-fit
值不為cover
設定constant()
是無效的 - 豎屏時候左側右側值為0,橫屏時候左側右側才有值
code
meta
<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=0, viewport-fit=cover">
css
.container {
overflow: scroll;
box-sizing: border-box;
padding-top: constant(safe-area-inset-top);
padding-left: constant(safe-area-inset-left);
padding-right: constant(safe-area-inset-right);
padding-bottom: constant(safe-area-inset-bottom);
}