【解决】vue 弹窗后面页面可以滚动问题

做web端项目过程中,发现点击弹窗后,弹窗后面的页面还可以滚动。

复现如下:

【方法1】

step1:在弹框页面使用

javascript 复制代码
@mousewheel.prevent
javascript 复制代码
<div
    v-show="workShowMenu"
    @mousewheel.prevent
 >
 // TO DO...弹框内容
</div>

注意:该方法不适用于弹框上也有滚动条的时候,会失效。

方法2】

step1:在点击出现弹框的事件里加上这句:

javascript 复制代码
document.documentElement.style.overflow = "hidden";

step2:在点击关闭弹框的事件里加上这句:

javascript 复制代码
document.documentElement.style.overflow = "scroll";

【优化】

若项目里使用弹窗较多,则可以通过在原型上定义它们使其在每个 Vue 的实例中可用(main.js)

javascript 复制代码
//弹出框后面页面禁止滑动
Vue.prototype.$stopScroll = function () {
  document.documentElement.style.overflow = "hidden";
}

//弹出框后面页面可以滑动
Vue.prototype.$allowScroll = function () {
   document.documentElement.style.overflow = "scroll";
}

step1:在点击出现弹框的事件里加上这句:

javascript 复制代码
this.$stopScroll();

step2:在点击关闭弹框的事件里加上这句:

javascript 复制代码
this.$allowScroll();

注:两个事件之所以要用开头,因为 是在 Vue所有实例中都可用的属性的一个简单约定。这样做会避免和已被定义的数据、方法、计算属性产生冲突。

相关推荐
庸俗今天不摸鱼10 分钟前
【万字总结】前端全方位性能优化指南(十)——自适应优化系统、遗传算法调参、Service Worker智能降级方案
前端·性能优化·webassembly
QTX1873010 分钟前
JavaScript 中的原型链与继承
开发语言·javascript·原型模式
黄毛火烧雪下17 分钟前
React Context API 用于在组件树中共享全局状态
前端·javascript·react.js
Apifox27 分钟前
如何在 Apifox 中通过 CLI 运行包含云端数据库连接配置的测试场景
前端·后端·程序员
一张假钞30 分钟前
Firefox默认在新标签页打开收藏栏链接
前端·firefox
高达可以过山车不行30 分钟前
Firefox账号同步书签不一致(火狐浏览器书签同步不一致)
前端·firefox
m0_5937581031 分钟前
firefox 136.0.4版本离线安装MarkDown插件
前端·firefox
掘金一周34 分钟前
金石焕新程 >> 瓜分万元现金大奖征文活动即将回归 | 掘金一周 4.3
前端·人工智能·后端
三翼鸟数字化技术团队1 小时前
Vue自定义指令最佳实践教程
前端·vue.js
Jasmin Tin Wei1 小时前
蓝桥杯 web 学海无涯(axios、ecahrts)版本二
前端·蓝桥杯