前端有两个盒子 hover盒子A 除了这个盒子以外的其他地方覆盖遮罩层,鼠标离开盒子A遮罩层消失 鼠标hover盒子B同样可以像盒子A一样触发遮罩层 请用vue2举个例子
时间: 2024-06-10 08:07:54 浏览: 53
当然,我很乐意为您提供一个解决方案!您可以通过在Vue2中使用v-if和v-show来实现盒子A和盒子B的hover效果以及遮罩层的触发和消失。
首先,您需要将遮罩层组件嵌套在两个盒子A和B组件中。在该组件中,您可以使用v-if和v-show指令来控制遮罩层的可见性:
```
<template>
<div class="wrapper">
<div class="box-a" @mouseover="showOverlay" @mouseleave="hideOverlay"></div>
<div class="box-b" @mouseover="showOverlay" @mouseleave="hideOverlay"></div>
<div class="overlay" v-if="showOverlay" v-show="showOverlay"></div>
</div>
</template>
<script>
export default {
data() {
return {
showOverlay: false,
};
},
methods: {
showOverlay() {
this.showOverlay = true;
},
hideOverlay() {
this.showOverlay = false;
},
},
};
</script>
<style scoped>
.wrapper {
position: relative;
width: 100%;
height: 100%;
}
.box-a,
.box-b {
display: inline-block;
width: 200px;
height: 200px;
}
.overlay {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, 0.5);
z-index: 999;
display: none;
}
</style>
```
在此组件中,我们在每个盒子上添加了mouseover和mouseleave事件处理程序来切换showOverlay数据属性的值。同时,我们使用v-if指令在DOM中创建遮罩层,并使用v-show指令在CSS中控制其可见性。
希望这可以帮助您解决您的问题!如果您还有其他问题,请随时向我提问。
阅读全文