移动端h5开发记录(踩坑之旅)【IOS、Safari、兼容适配等】

1.(Tips: 千万不要用,常规页面滚动就用body自身的滚动)在外层div限高100vh,内层div增加overflow-y: auto,在safari下滚动会有许多奇奇怪怪的问题

2. position: fixed中的input框聚焦软键盘弹出,IOS下会有光标错位问题

// IOS 9 实测有效
html, body {
  -webkit-overflow-scroll: touch;
}

3. 滚动穿透问题(实测的此方法兼容性最好,兼容IOS,实测iphone X也有效)

body.overflowHide {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
}

弹窗展开时给body增加class="overflowHide",同时记录

const top = window.scrollY;

动态设置top为-${top}px
弹窗收起时移除该class,设置top为0,调用window.scrollTo(0, top)恢复原滚动位置

4. 兼容iphone X安全区

第一步:设置网页在可视窗口的布局方式

新增 viweport-fit 属性,使得页面内容完全覆盖整个窗口:

<meta name="viewport" content="width=device-width, viewport-fit=cover">

只有设置了 viewport-fit=cover,才能使用 env()。

第二步:页面主体内容限定在安全区域内
body {
  padding-bottom: constant(safe-area-inset-bottom);
  padding-bottom: env(safe-area-inset-bottom);
}
第三步:fixed 元素的适配
// 原吸底元素增加以下样式
{
  margin-bottom: constant(safe-area-inset-bottom);
  margin-bottom: env(safe-area-inset-bottom);
}
// 加一个空的颜色块
{
  position: fixed;
  bottom: 0;
  width: 100%;
  height: constant(safe-area-inset-bottom);
  height: env(safe-area-inset-bottom);
  background: hsla(0, 0%, 100%, 0.9);  // 我觉得好看
}

参考:https://aotu.io/notes/2017/11/27/iphonex/index.html

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 14,687评论 1 92
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 28,219评论 1 45
  • mobileHack 这里收集了许多移动端上遇到的各种坑与相对解决方案 工具类网站 HTML5 与 CSS3 技术...
    Zoemings阅读 11,594评论 0 12
  • mobileHack 这里收集了许多移动端上遇到的各种坑与相对解决方案 工具类网站 HTML5 与 CSS3 技术...
    安石0阅读 6,075评论 0 5
  • 世间愁,情难留。浮生欢娱七分走。黄粱梦里游。 风悠悠,雨悠悠,日夜兼程尘未休。一分绕指柔。
    爰为阅读 4,274评论 8 15

友情链接更多精彩内容