兼容性
提示
文档只介绍部分兼容问题,欢迎补充说明。
重置css样式
不同浏览器的标签默认样式不同,例如margin和padding,为了保持样式一直,重置样式很有必要
ios
- fixed定位缺陷
解决方案: 可用iScroll插件解决这个问题
- overflow: auto; IOS手机滚动卡顿
/* 有回弹效果 */
webkit-overflow-scrolling: touch;
兼容iphoneX iphone11底部横(黑)线距离
- viewport-fit
iOS11 新增特性,苹果公司为了适配 iPhoneX 对现有 viewport meta 标签的一个扩展,用于设置网页在可视窗口的布局方式,可设置三个值:
参数 | 说明 |
---|---|
contain | 可视窗口完全包含网页内容 |
cover | 网页内容完全覆盖可视窗口 |
auto | 默认值,跟 contain 表现一致 |
注意:网页默认不添加扩展的表现是 viewport-fit=contain,需要适配 iPhoneX 必须设置 viewport-fit=cover,这是适配的关键步骤。
css 判断iphone安全距离,留出iphonex iphone11底部的横线距离 env属性只能在 viewport-fit=cover 时生效 env() 和 constant()
<meta name="viewport" content="width=device-width, minimum-scale=1, maximum-scale=1, user-scalable=no, initial-scale=1,viewport-fit=cover"/>
- iOS11 新增特性,Webkit 的一个 CSS 函数,用于设定安全区域与边界的距离,有四个预定义的变量:
注意:当 viewport-fit=contain 时 env() 是不起作用的,必须要配合 viewport-fit=cover 使用。对于不支持env() 的浏览器,浏览器将会忽略它。
safe-area-inset-left:安全区域距离左边边界距离
safe-area-inset-right:安全区域距离右边边界距离
safe-area-inset-top:安全区域距离顶部边界距离
safe-area-inset-bottom:安全区域距离底部边界距离
/* 这里我们只需要关注 safe-area-inset-bottom 这个变量,因为它对应的就是小黑条的高度(横竖屏时值不一样)。 */
这就意味着,之前使用的 constant() 在 iOS11.2 之后就不能使用的,但我们还是需要做向后兼容,像这样:
padding-bottom: constant(safe-area-inset-bottom); /* 兼容 iOS < 11.2 */
padding-bottom: env(safe-area-inset-bottom); /* 兼容 iOS >= 11.2 */
- 底部tabbar代码
.footer {
position: fixed;
width: 100%;
bottom: 0;
background: #f7f7f7;
border-top: 0.01rem solid #d7d8da;
z-index: 9999;
/* tabBar原高度(60px改成你项目自己的值)+安全距离,兼容 iOS < 11.2 */
height: constant(55px + env(safe-area-inset-bottom));
/* 兼容 iOS >= 11.2 */
height: calc(55px + env(safe-area-inset-bottom));
/* tabBar留出底部安全距离, 兼容 iOS < 11.2 */
padding-bottom: constant(safe-area-inset-bottom);
/* 兼容 iOS >= 11.2 */
padding-bottom: env(safe-area-inset-bottom);
}
- 页面内容区域
.content-box-l{
/* tabBar留出底部安全距离, 兼容 iOS < 11.2 */
padding-bottom: constant(safe-area-inset-bottom);
/* 兼容 iOS >= 11.2 */
padding-bottom: env(safe-area-inset-bottom);
}
阻止旋转屏幕时自动调整字体大小
html, body, form, fieldset, p, div, h1, h2, h3, h4, h5, h6 {-webkit-text-size-adjust:none;}
禁止 iOS 弹出各种操作窗口
-webkit-touch-callout: none
消除 transition 闪屏
-webkit-transform-style: preserve-3d;