vue解决弹出框与背景页面出现两个滚动条的问题

首先,我遇到的是某个憨憨用transition(动画)写弹出框,导致弹出框有个滚动条,入口页面(以下简称背景页)也有一个滚动条,当弹出框显示时,背景页的滚动条仍起作用。
那么,我们要知道背景页的滚动条在哪个DOM节点上。
在这里插入图片描述
我在两个DOM节点使用overflow:hidden;,找到起作用的节点位置。

解决方案(仅限于没用抽屉组件或者用动画写弹出框的’憨憨’):

一般使用布尔类型控制弹出框显示隐藏的话,可以使用watch监听控制样式

1.使用ocument.querySelector(‘body’)找到节点 body或者html
2.setAttribute(‘style’, ‘overflow:hidden;’)设置该节点滚动条隐藏样式
3.弹出框关闭时记得清除背景页滚动条隐藏样式document.body.removeAttribute(‘style’) 或
document.html.removeAttribute(‘style’)

代码如下:

// html
<slide-vkm :is-show-slide.sync="showExpressStatusSlide" :slide-width="35">
   <show-status-detail-dialog :message="logisticsMessage"/>
</slide-vkm>
watch: { //使用watch监听,判断弹出框是显示状态或隐藏状态
    showExpressStatusSlide: { //布尔类型变量,是否展示弹框
      handler(val) {  //true:显示弹出框,false:隐藏弹出框
        if (val) {
          document.querySelector('body').setAttribute('style', 'overflow:hidden;')
        } else {
          document.body.removeAttribute('style')
        }
      }
    }
  },
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值