H5 移动端滚动穿透

一般 H5 常见的活动页,如果当前页面超过一屏,同时在当前页面显示弹窗,整个页面依旧可以滚动

1.功能

常见的活动页问题,显示弹窗时,应当禁止滚动,锁住当前滚动高度

2.实现

2.1方案

显示弹窗时,记录滚动高度,body 标签 fixed,
隐藏弹窗时,body.scrollTop = 滚动高度,body 标签取消 fixed

2.2 代码实现(vuex)

// 全局样式
.model-open {
    position: fixed;
    width: 100%;
}

// store/index.js
// 打开 model
openModel(state, scrollTop) {
    state.scrollTop = scrollTop;
    document.body.classList.add('model-open');
    document.body.style.top = -state.scrollTop + 'px';
},
// 关闭 model
closeModel(state) {
    document.body.classList.remove('model-open');
    document.body.scrollTop = state.scrollTop;
}

2.3 特殊情况处理

(1)弹窗内容在弹窗容器内一屏展示的下
直接调用 openModel,closeModel

(2)弹窗内容在弹窗容器内一屏展示不下
在容器内部使用 better-scroll

参考文献,关于移动端的滚动穿透,别再跟风复制代码了

参考文献,html5 移动端滚动穿透 几种方案

参考文献,移动端滚动穿透问题完美解决方案

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 14,681评论 1 92
  • 公司最近在做微信端的商城,是嵌入公众号的那种,需求 => 原型 => UI, ok 开工。 主流程通了之后,测试开...
    1024AAA阅读 12,931评论 3 5
  • 重置样式相关移动端浏览器(部分iphone)横竖屏切换时,字体大小变化检索或设置移动端页面中对象文本的大小调整。该...
    744354889606阅读 4,012评论 0 1
  • 关于无法调节屏幕亮度 可能为显卡驱动问题,目前没有好的方法,可暂时使用命令改变屏幕亮度:echo 300 > /s...
    ZSMask阅读 3,157评论 0 0
  • 一天半晚去公园溜达,见到一位父亲带着七八岁的儿子坐在公园的长椅上,走近后听到了父子间的对话,原因是父子俩在家闹的太...
    卤煮肥肠大腰子阅读 2,812评论 0 0