我试图仅在打开灯箱组件时阻止滚动,但似乎无法这样做。我希望不要使用任何外部库或插件来执行此操作。

我的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'
    }
  }
})

10-06 07:58