https://juejin.cn/post/6844903967625854990
https://juejin.cn/post/6844903974491930637
原有代码检测导致如果新增加机型需要手动增加适配
@media only screen and (device-width: 375px) and (device-height: 812px) {
.#{$container} {
padding-top: 22px;
}
}
用此代码检测
@supports ((height: constant(safe-area-inset-top)) or (height: env(safe-area-inset-top))) and (-webkit-overflow-scrolling: touch) {
非刘海屏手机,也会支持,然后设置元素的padding对已有代码侵入性比较大,不能自定义设置增加,需要整体包一层。
这里用env(safe-area-inset-top),的距离在刘海屏手机会比较大。故而未采用。
故还是采用@media query查询的方式
//iphoneX、iphoneXs
@media only screen and (device-width: 375px) and (device-height: 812px) {
.#{$container} {
padding-top: 22px + $defaultTop;
// padding-top: 22px;
// padding-top: constant(safe-area-inset-top);
// padding-top: env(safe-area-inset-top);
}
}
//iphone Xs Max
@media only screen and (device-width: 414px) and (device-height: 896px) {
.#{$container} {
padding-top: 22px + $defaultTop;
// padding-top: constant(safe-area-inset-top);
// padding-top: env(safe-area-inset-top);
}
}
//iphone XR
@media only screen and (device-width: 414px) and (device-height: 896px) {
.#{$container} {
padding-top: 22px + $defaultTop;
// padding-top: constant(safe-area-inset-top);
// padding-top: env(safe-area-inset-top);
}
}
// iphone 12
@media only screen and (device-width: 390px) and (device-height: 844px) {
.#{$container} {
padding-top: 22px + $defaultTop;
}
}
// iphone 12max
@media only screen and (device-width: 428px) and (device-height: 926px) {
.#{$container} {
padding-top: 22px + $defaultTop;
}
}
env() CSS 函数以类似于 var 函数和 custom properties 的方式将用户代理定义的环境变量值插入你的 CSS 中