gpt4 book ai didi

vue.js - (Vue.js) 在模式中滚动也会滚动模式的背面

转载 作者:搜寻专家 更新时间:2023-10-30 22:45:28 26 4
gpt4 key购买 nike

点击图片会弹出一个长长的滚动模态框。问题是,如果您在模态中滚动,也会滚动模态的背面。你是怎么解决的?

Modal 是一个组件。这是我的代码:

Carousel.vue

<template>
<div>
<div v-for="(item, index) in photos" :key="index">
<div @click="imgClick(item)" style="cursor:pointer;">
<img :src="item.thumbnail" />
</div>
<Modal v-if='item.show' @close="item.show = false">
<div slot='body'>
<img :src="item.thumbnail" :class="`img-index--${index}`"/>
</div>
</Modal>
</div>
</div>
</template>

<script>
import Modal from './Modal.vue'
export default {
props: {
items: { type: Array, default: () => [] }
},
data() {
return {
photos: {}
}
},
created() {
this.photos = this.items.map(item => {
return { ...item, show: false }
})
},
methods: {
imgClick(item) {
item.show = true
}
},
components: {
Modal: Modal
}
}
</script>

最佳答案

大多数模式包通过将类应用到 <body> 来解决这个问题打开模态时标记。例如,<body class="modal-open"> .然后在您应用程序的 CSS 中,您可以添加此规则:

body.modal-open {
overflow: hidden;
}

这将使模式后面的页面不再可滚动。

无论您使用哪个模态包,都可能在模态打开或关闭时触发事件。您可以将此类应用于 <body> open 中的标签事件处理程序,并从 <body> 中删除该类close 中的标签事件处理程序。


更新

根据您添加的代码,您可以通过以下方式切换 modal-open<body> 上课标签:

...

<div @click="showModal(item)" style="cursor:pointer;">
<img :src="item.thumbnail" />
</div>
<Modal v-if='item.show' @close="hideModal(item)">
<div slot='body'>
<img :src="item.thumbnail" :class="`img-index--${index}`"/>
</div>
</Modal>

...

{
...

methods: {
showModal(item) {
item.show = true
document.body.classList.add("modal-open");
},
hideModal(item) {
item.show = false;
document.body.classList.remove("modal-open");
}
},

...
}

查看此 jsFiddle供引用。

关于vue.js - (Vue.js) 在模式中滚动也会滚动模式的背面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58103543/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com