Vue弹窗后怎么禁止滚动条滚动?

 分类:vue教程时间:2021-12-13 11:33:42点击:

    在Vue里点击打开弹窗后,默认页面的滚动条还是存在的,Vue弹窗后怎么禁止滚动条滚动?其实就控制body的css样式属性overflow:hidden有无。下面例子在methods里定义了stop和move两个函数,前者禁止禁止滚动条滚动,后者恢复滚动条滚动。

1.打开页面时有滚动条可以滚动,看下图:

Vue弹窗后怎么禁止滚动条滚动

2.有弹窗后禁止滚动条滚动,看下图:

3.关闭弹窗后有滚动条恢复滚动,看下图:

Vue弹窗后怎么禁止滚动条滚动

点击看效果

4.Vue弹窗后禁止滚动条滚动完整代码如下:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Vue弹窗后怎么禁止滚动条滚动?</title>
</head>
<style type="text/css">
* {
margin: 0;
padding: 0;
}
body {
height: 1500px;
margin: 100px;
background: #CCCCCC;
}
.box {
width: 700px;
height: 700px;
padding: 24px 20px 18px 20px;
background: #ffffff;
color: #333333;
border-radius: 12px;
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
z-index: 9;
}
.close {
position: absolute;
top: 10px;
right: 20px;
font-size: 20px;
cursor: pointer;
}
</style>
<body>
<div id='app'>
<div @click="boxShow = true, stop()">点击我展现弹窗</div>
<div v-if="boxShow" class="box">
<div class="close" @click="boxShow = false,move()">x</div>
我是弹窗盒子
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
var vm = new Vue({
el: '#app',
data: {
boxShow: false
},
methods: {
//禁止滚动条滚动
stop(){
var mo=function(e){e.preventDefault();};
document.body.style.overflow='hidden';
document.addEventListener("touchmove",mo,false);
},
//恢复滚动条滚动
move(){
var mo=function(e){e.preventDefault();};
document.body.style.overflow='';
//出现滚动条
document.removeEventListener("touchmove",mo,false);
}
},
})
</script>
</body>
</html>

除注明外的文章,均为来源:老汤博客,转载请保留本文地址!
原文地址: