vue 弹出框

 

index.html

<!DOCTYPE html>

<html lang="en">

  <head>

    <meta charset="utf-8">

    <title>Vue.js modal component example</title>

    <!-- Delete ".min" for console warnings in development -->

    <script src="../../dist/vue.min.js"></script>

    <link rel="stylesheet" href="style.css">

  </head>

  <body>

    <!-- template for the modal component -->

    <script type="text/x-template" id="modal-template">

      <transition name="modal" appear>

        <div class="modal-mask">

          <div class="modal-wrapper">

            <div class="modal-container">

 

              <div class="modal-header">

                <slot name="header">

                  default header

                </slot>

              </div>

 

              <div class="modal-body">

                <slot name="body">

                  default body

                </slot>

              </div>

 

              <div class="modal-footer">

                <slot name="footer">

                  default footer

                  <button class="modal-default-button" @click="$emit('close')">

                    OK

                  </button>

                </slot>

              </div>

            </div>

          </div>

        </div>

      </transition>

    </script>

 

    <!-- app -->

    <div id="app">

      <button id="show-modal" @click="showModal = true">Show Modal</button>

      <!-- use the modal component, pass in the prop -->

      <modal v-if="showModal" @close="showModal = false">

        <!--

          you can use custom content here to overwrite

          default content

        -->

        <h3 slot="header">custom header</h3>

      </modal>

    </div>

 

    <script>

      // register modal component

      Vue.component('modal', {

        template: '#modal-template'

      })

 

      // start app

      new Vue({

        el: '#app',

        data: {

          showModal: false

        }

      })

    </script>

  </body>

</html>

 

style.css

.modal-mask {

  position: fixed;

  z-index: 9998;

  top: 0;

  left: 0;

  width: 100%;

  height: 100%;

  background-color: rgba(0, 0, 0, .5);

  display: table;

  transition: opacity .3s ease;

}

 

.modal-wrapper {

  display: table-cell;

  vertical-align: middle;

}

 

.modal-container {

  width: 300px;

  margin: 0px auto;

  padding: 20px 30px;

  background-color: #fff;

  border-radius: 2px;

  box-shadow: 0 2px 8px rgba(0, 0, 0, .33);

  transition: all .3s ease;

  font-family: Helvetica, Arial, sans-serif;

}

 

.modal-header h3 {

  margin-top: 0;

  color: #42b983;

}

 

.modal-body {

  margin: 20px 0;

}

 

.modal-default-button {

  float: right;

}

 

/*

 * The following styles are auto-applied to elements with

 * transition="modal" when their visibility is toggled

 * by Vue.js.

 *

 * You can easily play with the modal transition by editing

 * these styles.

 */

 

.modal-enter {

  opacity: 0;

}

 

.modal-leave-to {

  opacity: 0;

}

 

.modal-enter .modal-container,

.modal-leave-to .modal-container {

  -webkit-transform: scale(1.1);

  transform: scale(1.1);

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值