vue点击其它地方隐藏组件

展示该组件时,同时展示一个透明的div。div在组件下方,覆盖整个页面。
给div增加一个点击监听事件。监听到点击时,传给父组件,让其隐藏当前组件。

<template>
  <div>
    <div class="detail-card" @click="hideCard"></div>
    <img :src="src" alt="" class="card">
  </div>
</template>

将点击事件传给父组件

hideCard(){
  this.$emit('hideCard')
}

父组件中,通过v-show来控制显示隐藏

    <DetailCard v-show="isShare" @hideCard="hideCard"  />
      hideCard(){
        this.isShare = false
      }

子组件布局:

  .detail-card{
    height: 100%;
    width: 100%;
    z-index: 9;
    position: absolute;
    top: 0px;
  }
  .card{
    width: 300px;
    position: fixed;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    border: 3px solid rgba(100,100,100,0.2);
    border-radius: 20px;
    z-index: 10;
  }
效果展示
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容