单页应用移动端弹窗穿透解决终极方案

15 篇文章 0 订阅
12 篇文章 0 订阅

移动端的web项目,大多数会采用单页应用来实现,在布局上也有一定的讲究,从设计角度出发的话,布局大致分为两类,一类是单页全屏,另外一种是内容多的滚动屏。全屏的话,一般布局会采用vh,position等等方式来实现,而滚动屏又会分为两小类,一类是局部滚动,另外一类是全局滚动,一旦页面出现滚动条,并且此页面有弹窗的需求时,穿透这个问题就来了。

一句话总结穿透就是:弹层下的页面滚动会跟随着弹窗的滚动。要解决这个问题,有很多种方案,尤其是在移动端,比如说,设置overflow: hidden, position: fixed 等,这些方案可以解决,但是有后遗症,直接设置会让页面滚动到头部 ,这个点也是挺令人烦恼的,页面滚动了一定距离之后,弹窗出来了,采用如上方案,页面又滚动回去了。

那如何解决呢,原理也特别简单,以vuejs来举例:

代码如图所示,弹窗出现的时候,给body作fixed定位处理,并记录滚动位置,但弹窗消失时,把定位取消,并将页面滚动到记录位置即可,这种处理方法处理穿透现象时,页面不会有抖动,兼容性极好,不管是全屏滚动 ,还是页面构建了局部的滚动,这种方法都能通用,它的原理,稍为了解dom结构的人,看一眼都能很清楚的知道。
js就是这样一种很有意思的语言, 基础越透彻,越有成就感,哈哈哈

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值