【更新】剖析 iOS 11 网页适配问题

前言

今天这篇是对【第1064期】剖析 iOS 11 网页适配问题  文章的更新版,新增了今天分享更新的内容。

正文从这开始~

更新内容

Webkit 文档 Designing Websites for iPhone X

CSS function env()

The env() function shipped in iOS 11 with the name constant(). Beginning with Safari Technology Preview 41 and the iOS 11.2 beta, constant() has been removed and replaced with env(). You can use the CSS fallback mechanism to support both versions, if necessary, but should prefer env() going forward.

Webkit 在 iOS 11 中新增 CSS function:env() 替代 constant(),文档中推荐使用 env(),而 constant() 从 Safari Technology Preview 41 和 iOS 11.2 beta 开始会被废弃。env() 用法如同 var(),在不支持的 env() 的浏览器中,会自动忽略这一样式规则,不影响网页正常展示:

.post {
 padding: 12px;
 padding-left: env(safe-area-inset-left);
 padding-right: env(safe-area-inset-right);
}

CSS function min() 和 max()

在 iPhone X 设备设置网页边距的时候,可能会遇到这样的情形:我们通过 env(safe-area-inset-left) 和 env(safe-area-inset-right) 设置了页面展示左右边距:

.post {
 padding-left: env(safe-area-inset-left);
 padding-right: env(safe-area-inset-right);
}

在横屏状态下显示正常,但是在竖屏状态下,常量 safe-area-inset-left 和 safe-area-inset-right 都为 0,所以会导致页面展示左右边距为 0px,如下图左,正常情况应该是如下图右,竖屏状态下页面左右也有边距。




Webkit 从 Safari Technology Preview 41 和 iOS 11.2 beta 开始,新增 CSS function:min() 和 max(),这两个就可以解决这个问题了。

Both functions take an arbitrary number of arguments and return the minimum or maximum. They can be used inside of calc(), or nested inside each other, and both functions allow calc()-like math inside of them.

@supports(padding: max(0px)) {
 .post {
   padding-left: max(12px, env(safe-area-inset-left));
   padding-right: max(12px, env(safe-area-inset-right));
 }
}

此处需要使用 @supports 去检测浏览器是否支持 min() 和 max()

参考链接

  • Human Interface Guidelines-iPhone X

  • Removing the White Bars in Safari on iPhone X

  • Understanding the WebView Viewport in iOS 11

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值