• 封装对话框,模态框的背景,使用过度transition


    效果图:

     

    DOM部分:

    子组件,也就是封装的Dialog.vue

    DOM部分:

    <template>
      <transition name="fade">
        <div class="dialog-wrap" v-show="showMask">
          <div class="dialog-mask"></div>
          <div class="dialog">
            <div class="title">
              登陆
              <span class="close" @click="closeModule">X</span>
            </div>
            <div class="input">
              <el-input placeholder="请输入您的UID" v-model="uid" clearable></el-input>
            </div>
            <div class="login-helper">
              <p data-v-7b4b534a class="help">
                1、请
                <a
                  data-v-7b4b534a
                  href="http://music.163.com"
                  target="_blank"
                >点我(http://music.163.com)</a>打开网易云音乐官网
              </p>
              <p class="help">2、点击页面右上角的“登录”</p>
              <p class="help">3、点击您的头像,进入我的主页</p>
              <p class="help">4、复制浏览器地址栏 /user/home?id= 后面的数字(网易云 UID)</p>
            </div>
            <div class="login-button">
              <span>登陆</span>
            </div>
          </div>
        </div>
      </transition>
    </template>

    Script部分:

    <script>
    export default {
      props: ['showMask'],  // 接收父组件传递过来的showMask,控制Dialog对话框的显示与隐藏
      data() {
        return {
          uid: null
        };
      },
      methods: {
        closeModule() {
          this.$emit('close'); // 点击X号,向父组件触发close事件
        }
      }
    };
    </script>

    样式部分:

    @import '@/style/variables.scss';
    @import '@/style/mixin.scss';
    .dialog-wrap {
      position: absolute;
      z-index: 100;
      &.fade-enter-active,
      &.fade-leave-active {
        transition: opacity 0.5s;
      }
      &.fade-enter,
      &.fade-leave-to {
        opacity: 0;
      }
      .dialog {
        position: fixed;
        @include same-wh(25rem);
        left: 50%;
        top: 50%;
        transform: translate(-50%, -50%);
        // background-color: #202020;
        background-color: #202020;
        z-index: 100;
        padding: 2.142857rem 1.428571rem;
        .title {
          position: relative;
          color: #ffffff;
          margin-bottom: 1.785714rem;
          .close {
            position: absolute;
            top: 0;
            right: 0;
            @include same-wh(2rem);
            text-align: center;
            line-height: 2rem;
            cursor: pointer;
            border-radius: 50%;
            background-color: rgba($color: #000000, $alpha: 0.8);
          }
        }
        .input {
          margin-bottom: 1.142857rem;
          .el-input__inner {
            background-color: #4b4b4b;
            font-size: 0.857143rem;
            border: 0;
            color: #b0b0b0;
          }
        }
        .login-helper {
          line-height: 1.428571rem;
          margin-bottom: 0.714286rem;
          color: #b0b0b0;
          .help {
            margin-bottom: 8px;
          }
        }
        .login-button {
          padding: 0.714286rem 1.428571rem;
          margin-top: 1.785714rem;
          border-radius: 0.357143rem;
          text-align: center;
          color: #ffffff;
          background-color: $theme-color;
          cursor: pointer;
        }
      }
      // 后面的遮挡层 .dialog
    -mask { position: fixed; z-index: 100; top: 0; left: 0; right: 0; bottom: 0; background-color: rgba($color: #000000, $alpha: 0.6); } }

    父组件使用:

    DOM部分:

    <div class="show-mask">
        // 监听子组件触发的close事件 <Dialog @close="closeLoginModule" :showMask="showMask"></Dialog> </div>

    script部分:

    export default {
      components: {
        Dialog
      },
      data() {
        return {
          showMask: false
        };
      },
      methods: {
        openLoginModule() {
          this.showMask = true;
        },
      // 关闭对话框 closeLoginModule() {
    this.showMask = false; } } };

  • 相关阅读:
    BEC listen and translation exercise 44
    中译英12
    BEC listen and translation exercise 43
    中译英11
    BEC listen and translation exercise 42
    中译英10
    BEC listen and translation exercise 41
    中译英9
    BEC listen and translation exercise 40
    中译英8
  • 原文地址:https://www.cnblogs.com/hahahakc/p/13158897.html
Copyright © 2020-2023  润新知