Vue 蒙版Demo

<template>
    <transition name="fade" mode="out-in">
        <section class="messageMask" v-show="visible" @click="writeMessageFun($event)">
            <div id="msk" class="messageMaskContent" ref="msk">
                <slot></slot>
            </div>
        </section>
    </transition>
</template>

<script>
export default {
  name: 'index',
  mounted () {
    this.stopPropagation()
  },
  props: {
    show: {
      type: Boolean,
      default: false
    }
  },
  data () {
    return {
      visible: false
    }
  },
  methods: {
    writeMessageFun (ev) {
      if (!this.$refs.msk.contains(ev.target)) {
        this.visible = false
      }
      this.$emit('cancel', this.show)
    },
    stopPropagation () {
      this.$refs.msk.addEventListener('click', function (e) {
        // Stop bubbling event
        e.stopPropagation()
      }, false)
    }
  },
  watch: {
    show () {
      this.stopPropagation()
      this.visible = this.show
    }
  }
}
</script>

<style scoped>
    .messageMask{
        position: fixed;
        top: 0;
        bottom: 0;
        left: 0;
        width: 100%;
        background-color: rgba(0,0,0,.3);
        z-index: 1000;
        .messageMaskContent{
            position: absolute;
            pointer-events: none;
            bottom: 0;
            left: 0;
            width: 100%;
            height: 100%;
            z-index: 1001;
            background-color: #fff;
        }
    }
</style>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值