我的编程空间,编程开发者的网络收藏夹
学习永远不晚

vue定义模态框的方法

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

vue定义模态框的方法

本文实例为大家分享了vue定义模态框的具体代码,供大家参考,具体内容如下

<template>
<transition name="slide">
    <div class="modal" v-show="showModal">
      <div class="mask"></div>
      <div class="modal-dialog">
        <div class="modal-header">
          <span>{{title}}</span>
          <a href="javascript:;" class="icon-close" v-on:click="$emit('cancel')"></a>
        </div>
        <div class="modal-body">
          <slot name="body"></slot>
        </div>
        <div class="modal-footer">
          <a href="javascript:;" class="btn" v-if="btnType===1" v-on:click="$emit('submit')">{{sureText}}</a>
          <a href="javascript:;" class="btn" v-if="btnType===2" v-on:click="$emit('cancel')">{{cancelText}}</a>
          <div class="btn-group" v-if="btnType===3">
            <a href="javascript:;" class="btn" v-if="btnType===1" v-on:click="$emit('submit')">{{sureText}}</a>
            <a href="javascript:;" class="btn" v-if="btnType===2" v-on:click="$emit('cancel')">{{cancelText}}</a>
          </div>
        </div>
      </div>
    </div>
  </transition>
</template>
 
<script>
export default {
  name: 'modal',
  props: {
    // 弹窗类型  小small 中middle 打large 表单form
    modalType: {
      type: String,
      default: 'form'
    },
    title: String,
    // 按钮类型1确定 2取消 3确定取消
    btnType: String,
    sureText: {
      type: String,
      default: '确定'
    },
    cancelText: {
      type: String,
      default: '取消'
    },
    showModal: Boolean
  }
}
</script>
 
<style lang="scss">
@import '../assets/scss/config.scss';
@import '../assets/scss/modal.scss';
@import '../assets/scss/mixin.scss';
</style>

modal.scss

@import './mixin.scss';
.modal {
  @include position(fixed);
  z-index: 30;
  transition: all .5s;
  .mask {
    @include position(fixed);
    background-color: $colorI;
    opacity: 0.5;
  }
  &.slide-enter-active {
    top: 0;
  }
  &.slide-leave-active {
    top: -100%;
  }
  &.slide-enter {
    top: -100%;
  }
  .modal-dialog {
    @include position(absolute,40%,50%,660px,auto);
    background-color: $colorG;
    transform: translate(-50%,-50%);
    .modal-header {
      height: 60px;
      background-color: $colorJ;
      padding: 0 25px;
      line-height: 60px;
      font-size: $fontI;
      .icon-close {
        @include positionImg(absolute,23px,25px,14px,14px,'/imgs/icon-close.png');
        transition: transform .3s;
        &:hover {
          transform: scale(1.5);
        }
      }
    }
    .modal-body {
      padding: 42px 40px 54px;
      font-size: 14px;
    }
    .modal-footer {
      height: 82px;
      line-height: 82px;
      text-align: center;
      background-color: $colorJ;
    }
  }
}
@mixin flex($hov:space-between, $col: center) {
  display: flex;
  justify-content: $hov;
  align-items: $col;
}
 
@mixin bgImg($w:0, $h:0, $img:'', $size:contain) {
  display: inline-block;
  width: $w;
  height: $h;
  background: url($img) no-repeat center;
  background-size: $size;
}
 
@mixin positionImg($pos:absolute,$top:0,$right:0,$w:0, $h:0, $img:'', $size:contain) {
  position: $pos;
  top: $top;
  right: $right;
  width: $w;
  height: $h;
  background: url($img) no-repeat center;
  background-size: $size;
}
 
@mixin position($pos:absolute,$top:0,$left:0,$w:100%,$h:100%) {
  position: $pos;
  top: $top;
  left: $left;
  width: $w;
  height: $h;
}

要引用的

<modal
      title="提示"
      sureText="查看购物车"
      :btnType="1"
      modalType="middle"
      v-bind:showModal="showModal"
      v-on:submit="goToCart"
      v-on:cancel="showModal=false"
    >
    <template v-slot:body>
      <p>商品添加成功!</p>
    </template>
    </modal>
 
 
data() {
    return {
        isModal:false
    }
}

button.scss

@import './config.scss';
.btn {
  display: inline-block;
  width: 110px;
  line-height: 30px;
  text-align: center;
  background-color: $colorA;
  color: $colorG;
  border: none;
  cursor: pointer;
}
 
.btn-default {
  background-color: #b0b0b0;
  color: $colorG;
}
.btn-large {
  width: 202px;
  height: 50px;
  line-height: 50px;
  font-size: 18px;
}
.btn-huge {
  width: 300px;
  height: 54px;
  line-height: 54px;
  font-size: 18px;
}
.btn-group {
  .btn {
    margin-right: 20px;
    &:last-child {
      margin-right: 0;
    }
  }
}

自定义模态框弹出框的大小位置及动画

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

vue定义模态框的方法

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Vue怎么自定义模态对话框弹窗

这篇文章主要介绍“Vue怎么自定义模态对话框弹窗”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Vue怎么自定义模态对话框弹窗”文章能帮助大家解决问题。模态对话框弹窗效果:父组件(应用页面)主要代码:
2023-07-02

Java模板方法模式定义算法框架

Java模板方法模式是一种行为型设计模式,它定义了一个算法框架,由抽象父类定义算法的基本结构,具体实现细节由子类来实现,从而实现代码复用和扩展性
2023-05-18

JQuery如何自定义模态框效果

这篇文章主要讲解了“JQuery如何自定义模态框效果”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JQuery如何自定义模态框效果”吧!重点:基于jQuery ,也可改造成原生模态框功能:1
2023-07-02

vue自定义动态组件的方法是什么

本篇内容主要讲解“vue自定义动态组件的方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“vue自定义动态组件的方法是什么”吧! Vue.extend 思路就是拿到组件的构造函数,这样我们
2023-07-04

AmazeUI中模态框的实现方法

这篇文章给大家分享的是有关AmazeUI中模态框的实现方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。AmazeUI的模态框效果如下:完全就如同某些手机浏览器对alert()的处理。其现实代码如下: