H5项目笔记

safari 长页面滚动卡顿   

body { height: 100vh; overflow-y: hidden }
.wrapper { overflow-y: auto;  -webkit-overflow-scrolling: touch; }

页面滚动到某个dom处

document.getElementById("id").scrollIntoView();

点击事件与穿透

双层元素叠加时,在上层元素上绑定touch事件,下层元素绑定click事件,由于click事件发生在touch事件之后,点击上层元素,元素消失,下层元素会触发click事件,由此产生了事件穿透。

解决方法:直接使用 fastclick 库

软键盘弹起/收回引起的页面样式错乱

// 记录原有的视口高度 
const originalHeight = document.documentElement.clientHeight;
window.onresize = function(){
    var resizeHeight = document.documentElement.clientHeight || document.body.clientHeight;
    if(resizeHeight < originalHeight ){
        // 恢复内容区域高度
        // const container = document.getElementById("container")
        // 例如 container.style.height = originalHeight;
   }else{}
}

 iPhone X系列安全区域适配问题

/* 适配 iPhone X 顶部填充*/
@supports (top: env(safe-area-inset-top)){
    body,.header {
        padding-top: constant(safe-area-inset-top, 40px);
        padding-top: env(safe-area-inset-top, 40px);
        padding-top: var(safe-area-inset-top, 40px);
     }
}
/* 判断iPhoneX 将 footer 的 padding-bottom 填充到最底部 */
@supports (bottom: env(safe-area-inset-bottom)){
    body,.footer {
        padding-bottom: constant(safe-area-inset-bottom, 20px);
        padding-bottom: env(safe-area-inset-bottom, 20px);
        padding-bottom: var(safe-area-inset-bottom, 20px);
     }
}

页面缩放问题

<meta name="viewport" content="width=device-width, initial-scale=1.0;user-scalable=no"> 

手机端调试  vconsole 控制台插件

原文地址:https://www.cnblogs.com/Merrys/p/11447934.html