弹框可滚动且阻止页面滚动
vue项目里,如果一个列表页面弹框,弹框内容很长,也需要滚动,这个时候就不能在弹框的DOM上加@touchmove.prevent,否则弹框内也禁止滚动了
这个时候得用js来控制根节点的样式来实现弹框显示时禁止根节点页面滚动,弹框消失时恢复根节点页面滚动。
data: { showTip = false }, watch: { showTip(v){ const dom = document.querySelector('.content-wrapper') //如果提示框显示,就把页面根节点设为不可滚动,弹框消失可以滚动 if (v) { dom.style.height = '100vh' // 设备视口高度 dom.style.overflow = 'hidden' } else { dom.style.height = 'unset' dom.style.overflow = 'unset' } } }