如何使用vue slot创建一个模态框的实例代码


Posted in Javascript onMay 24, 2020

【1】遮罩层:承载内容,管理样式布局。

【2】内容层:控制遮罩层的显示与否。

遮罩层和内容区之间应该解耦。遮罩层和内容区之间应该解耦。遮罩层和内容区之间应该解耦。

遮罩层不依赖于内容区,内容是放置在遮罩层里的,至于内容区里的内容是什么,遮罩层完全不用在意。因此可以在遮罩层里采用插槽。

遮罩层的实现

<div class="common-mask" v-if="visible">
 <slot name="head"></slot>
 <slot name="body"></slot>
 <slot name="foot"></slot>
 </div>
<style scoped lang='scss'>
 .common-mask {
 position: fixed;
 top: 0;
 bottom: 0;
 left: 0;
 right: 0;
 background: rgba($color: #000000, $alpha: 0.75);
 display: flex;
 justify-content: center;
 align-content: center;
 z-index: 4;
 }
</style>

内容层的实现

<Vue-Modal :visible="visible">
 <div slot="head">head</div>
 <div slot="body">body</div>
 <div slot="foot">
 <button class="common-btn" @click="close">Close</button>
 </div>
 </Vue-Modal>

PS:vue组件模态框实现方式

// 组件代码

<template>
<div>
 <div class="dialog-modal"> <!-- 根元素,z-index 需要高于父容器其他元素 -->
  <div class="dialog-wrapper" @click="onClose" v-show="isShow"></div> <!-- 加载一个具有透明度的背景,使根元素透明,子元素会继承该透明度 -->
  <transition name="drop">
    <div class="dialog-container" v-show="isShow"> <!-- 模态框容器,z-index 需要高于背景 -->
      <span class="close-btn" @click="onClose">x</span>
      <slot>
        <p>hello</p>
      </slot>
    </div>
  </transition>
 </div>
</div>
</template>
<script>
  export default {
    props: {
      isShow:{
        type: Boolean,
        default: false
      }
    },
    methods: {
      onClose(){
        this.$emit('on-close');
      }
    }
  }
</script>
<style>
.drop-enter-active {
 transition: all .5s;
}
.drop-leave-active {
 transition: all .3s;
}
.drop-enter {
 transform: translateY(-500px);
}
.drop-leave-active {
 transform: translateY(-500px);
}  
 
  .dialog-modal{
    position: absolute;
    z-index: 5;
  }
  .dialog-wrapper
  {
    position: fixed;
    height: 100%;
    width: 100%;
    z-index: 5;
    top: 0;
    left: 0;
    bottom: 0;
    right: 0;
   
  }
  .dialog-wrapper{
    background-color: #eee;
    opacity: .9;
  }
  .dialog-container{
    position: fixed;
    z-index:80;
    top: 10%;
    left: 25%;
    width: 50%;
    /* margin: 0 auto; */
    background-color: #eee;
    border-radius: 3px;
    box-shadow: 0 5px 15px rgba(0,0,0,.5);
  }
  span.close-btn{
    padding: 0 5px;
    float: right;
    cursor: pointer;
    font-size: 18px;
    font-weight: bold;
  }
</style>

// 组件使用

//导入模态对话框
import modal from './plugins/dialog'
// 在使用组件
<modal></modal>

<modal @on-close="closeThis('isShowLog')":is-show='isShowLog'><login></login></modal>

总结

到此这篇关于如何使用vue slot创建一个模态框的文章就介绍到这了,更多相关vue slot创建模态框内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
JavaScript窗口功能指南之在窗口中书写内容
Jul 21 Javascript
JQuery中html()方法使用不当带来的陷阱
Apr 07 Javascript
javascript获取函数名称、函数参数、对象属性名称的代码实例
Apr 12 Javascript
javascript解析json数据的3种方式
May 08 Javascript
浅谈javascript语法和定时函数
May 03 Javascript
jQuery的选择器中的通配符[id^='code']或[name^='code']及jquery选择器总结
Dec 24 Javascript
jQuery+css实现的时钟效果(兼容各浏览器)
Jan 27 Javascript
利用Vue.js指令实现全选功能
Sep 08 Javascript
关于Vue项目跨平台运行问题的解决方法
Sep 18 Javascript
微信小程序五子棋游戏的悔棋实现方法【附demo源码下载】
Feb 20 Javascript
jQuery操作选中select下拉框的值代码实例
Feb 07 jQuery
11个Javascript小技巧帮你提升代码质量(小结)
Dec 28 Javascript
使用React代码动态生成栅格布局的方法
May 24 #Javascript
ES6对象操作实例详解
May 23 #Javascript
ES6函数和数组用法实例分析
May 23 #Javascript
ES6箭头函数和扩展实例分析
May 23 #Javascript
ES6新增的数组知识实例小结
May 23 #Javascript
ES6扩展运算符和rest运算符用法实例分析
May 23 #Javascript
JavaScript组合设计模式--改进引入案例分析
May 23 #Javascript
You might like
PHP函数学习之PHP函数点评
2012/07/05 PHP
PHP生成及获取JSON文件的方法
2016/08/23 PHP
Yii统计不同类型邮箱数量的方法
2016/10/18 PHP
Yii框架where查询用法实例分析
2019/10/22 PHP
javascript不同页面传值的改进版
2008/09/30 Javascript
JQuery的read函数与js的onload不同方式实现
2013/03/18 Javascript
JS读取XML文件示例代码
2013/11/15 Javascript
javascript ajax的5种状态介绍
2014/08/18 Javascript
JS获取各种宽度、高度的简单介绍
2014/12/19 Javascript
jQuery中extend()和fn.extend()方法详解
2015/06/03 Javascript
js图片跟随鼠标移动代码
2015/11/26 Javascript
基于javascript实现泡泡大冒险网页版小游戏
2016/03/23 Javascript
微信小程序 实现拖拽事件监听实例详解
2016/11/16 Javascript
vue.js学习笔记:如何加载本地json文件
2017/01/17 Javascript
node.js 核心http模块,起一个服务器,返回一个页面的实例
2017/09/11 Javascript
vue综合组件间的通信详解
2017/11/06 Javascript
使用 vue-i18n 切换中英文效果
2018/05/23 Javascript
[01:01:43]EG vs VP 2018国际邀请赛淘汰赛BO3 第二场 8.24
2018/08/25 DOTA
[46:42]DOTA2-DPC中国联赛正赛 Aster vs Magma BO3 第二场 3月5日
2021/03/11 DOTA
python数据结构之二叉树的遍历实例
2014/04/29 Python
Python使用Redis实现作业调度系统(超简单)
2016/03/22 Python
Python实现更改图片尺寸大小的方法(基于Pillow包)
2016/09/19 Python
Python切片操作实例分析
2018/03/16 Python
python如何实现异步调用函数执行
2019/07/08 Python
Python中利用LSTM模型进行时间序列预测分析的实现
2019/07/26 Python
Tensorflow轻松实现XOR运算的方式
2020/02/03 Python
使用HTML5 Canvas API控制字体的显示与渲染的方法
2016/03/24 HTML / CSS
猫途鹰:全球领先的旅游点评社区
2017/04/07 全球购物
计算机专业应届毕业生自荐信
2013/09/26 职场文书
网络研修随笔感言
2014/02/17 职场文书
小学数学国培感言
2014/03/10 职场文书
商场周年庆活动方案
2014/08/19 职场文书
党员个人对照检查材料范文
2014/09/24 职场文书
召开会议通知范文
2015/04/15 职场文书
家长会主持词开场白
2015/05/29 职场文书
python 管理系统实现mysql交互的示例代码
2021/12/06 Python