我试图仅在打开灯箱组件时阻止滚动,但似乎无法这样做。我希望不要使用任何外部库或插件来执行此操作。
我的App.vue包含“LightBox”组件,因此我假设防止滚动功能也应存在于App.vue中。
App.vue片段:
<template>
<div class="SocialAlbumWidget">
<div v-if="isModalVisible && media[activeIndex]">
<LightBox
...
/>
我目前在“方法”部分中有一个“showModal()”函数,因此正在考虑将其传递给另一个函数。
方法:
mothods: {
...
showModal () {
this.isModalVisible = true
},
closeModal () {
this.isModalVisible = false
}
我希望当“灯箱”组件关闭时该主体具有滚动,而当“灯箱”组件打开时该主体将禁用。谢谢!让我知道其他什么代码会有用。
最佳答案
您可以使用观察者对isModalVisible
中的更改使用react,并通过使用style="overflow: hidden"
禁用滚动功能。
遵循以下原则:
// HTML
<btn @click="dialog = !dialog" >Click Me </btn>
// JS
new Vue({
el: '#app',
data () {
return {
dialog: false,
}
},
watch: {
isModalVisible: function() {
if(this.isModalVisible){
document.documentElement.style.overflow = 'hidden'
return
}
document.documentElement.style.overflow = 'auto'
}
}
})