• vue实现点击一个按钮出现弹框,点击弹框外关闭弹框


    vue实现点击一个按钮出现弹框,点击弹框外关闭弹框

    效果图展示:

    View层

    <template>
      <div>
        <div class="mask" v-if="showModal" @click="showModal=false"></div>
        <div class="pop" v-if="showModal">
            <button @click="showModal=false" class="btn">点击出现弹框</button>
        </div>
        <button @click="showModal=true" class="btn">点击出现弹框</button>
      </div>
    </template>

    数据层:

    <script>
    export default {
      data() {
        return {
          showModal: false
        };
      }
    };
    </script>

    样式层:

    <style scoped>
    .mask {
      background-color: #000;
      opacity: 0.3;
      position: fixed;
      top: 0;
      left: 0;
       100%;
      height: 100%;
      z-index: 1
    }
    .pop {
      background-color: #fff;
     
      position: fixed;
      top: 100px;
      left: 300px;
       calc(100% - 600px);
      height:calc(100% - 200px);
      z-index: 2
    }
    .btn {
      background-color: #fff;
      border-radius: 4px;
      border: 1px solid blue;
      padding: 4px 12px;
    }
    </style>

    关键点:

    1.mask层的层级(z-index)要比弹出的pop的层级低。

    2.wow,写完啦,就是这么简单....

    完整代码:

    <template>
      <div>
        <div class="mask" v-if="showModal" @click="showModal=false"></div>
        <div class="pop" v-if="showModal">
            <button @click="showModal=false" class="btn">点击出现弹框</button>
        </div>
        <button @click="showModal=true" class="btn">点击出现弹框</button>
      </div>
    </template>
    
    <script>
    export default {
      data() {
        return {
          showModal: false
        };
      }
    };
    </script>
    
    <style scoped>
    .mask {
      background-color: #000;
      opacity: 0.3;
      position: fixed;
      top: 0;
      left: 0;
       100%;
      height: 100%;
      z-index: 1
    }
    .pop {
      background-color: #fff;
     
      position: fixed;
      top: 100px;
      left: 300px;
       calc(100% - 600px);
      height:calc(100% - 200px);
      z-index: 2
    }
    .btn {
      background-color: #fff;
      border-radius: 4px;
      border: 1px solid blue;
      padding: 4px 12px;
    }
    </style>

    扩展:按钮在父组件,弹框是一个子组件,会涉及到父子组件之间的传值。

    -------

    转载于:https://www.cnblogs.com/DZzzz/p/11204805.html

  • 相关阅读:
    小程序-地图-定位在我此时的位置
    小程序-地图-标注点固定在某一点
    小程序-列表块/类式ul-li格式(1)
    表单form-input标签禁止聚焦输入
    forEach与jdk8中的lambda, Stream
    put get & push pull
    事务背书 ACID, CAP, BASE
    懒汉式单例要加volatile吗
    SpringMVC DeferedResult和servlet3.1 AsyncContext异步请求
    netty在rpc MQ中的应用
  • 原文地址:https://www.cnblogs.com/kirin1105916774/p/12150261.html
Copyright © 2020-2023  润新知