如何使用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 相关文章推荐
Extjs学习笔记之九 数据模型(上)
Jan 11 Javascript
javascript的函数、创建对象、封装、属性和方法、继承
Mar 10 Javascript
jQuery下通过replace字符串替换实现大小图片切换
May 22 Javascript
jquery.autocomplete修改实现键盘上下键自动填充示例
Nov 19 Javascript
JS烟花背景效果实现方法
Mar 03 Javascript
JS实现日期时间动态显示的方法
Dec 07 Javascript
javascript基于prototype实现类似OOP继承的方法
Dec 16 Javascript
详解jquery事件delegate()的使用方法
Jan 25 Javascript
使用JQuery 加载页面时调用JS的实现方法
May 30 Javascript
AngularJS基础 ng-selected 指令简单示例
Aug 03 Javascript
AngularJS使用Filter自定义过滤器控制ng-repeat去除重复功能示例
Apr 21 Javascript
angular组件间通讯的实现方法示例
May 07 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
一台收音机,让一家人都笑逐颜开!
2020/08/21 无线电
将PHP作为Shell脚本语言使用
2006/10/09 PHP
APMServ使用说明
2006/10/23 PHP
php实现多城市切换特效
2015/08/09 PHP
PHP实现webshell扫描文件木马的方法
2017/07/31 PHP
Laravel 验证码认证学习记录小结
2019/12/20 PHP
js 代码优化点滴记录
2012/02/19 Javascript
JavaScript中“+”的陷阱深刻理解
2012/12/04 Javascript
js 调用本地exe的例子(支持IE内核的浏览器)
2012/12/26 Javascript
CSS鼠标响应事件经过、移动、点击示例介绍
2013/09/04 Javascript
JQuery中form验证出错信息的查看方法
2013/10/08 Javascript
JavaScript AJAX之惰性载入函数
2014/08/27 Javascript
浅谈重写window对象的方法
2014/12/29 Javascript
EasyUI实现第二层弹出框的方法
2015/03/01 Javascript
深入理解JavaScript系列(25):设计模式之单例模式详解
2015/03/03 Javascript
从零开始学习Node.js系列教程四:多页面实现的数学运算示例
2017/04/13 Javascript
基于nodejs+express4.X实现文件下载的实例代码
2017/07/13 NodeJs
Node.js+jade+mongodb+mongoose实现爬虫分离入库与生成静态文件的方法
2017/09/20 Javascript
基于Angular中ng-controller父子级嵌套的相关属性详解
2018/10/08 Javascript
layui上传图片到服务器的非项目目录下的方法
2019/09/26 Javascript
python求pi的方法
2014/10/08 Python
Saltstack快速入门简单汇总
2016/03/01 Python
PyQt5每天必学之布局管理
2018/04/19 Python
对python mayavi三维绘图的实现详解
2019/01/08 Python
python3.6根据m3u8下载mp4视频
2019/06/17 Python
用python求一个数组的和与平均值的实现方法
2019/06/29 Python
python 如何调用 dubbo 接口
2020/09/24 Python
python Matplotlib数据可视化(1):简单入门
2020/09/30 Python
大宝sod蜜广告词
2014/03/21 职场文书
三好学生事迹材料
2014/12/24 职场文书
2015年材料员工作总结
2015/04/30 职场文书
行政处罚决定书
2015/06/24 职场文书
2015初中教导处工作总结
2015/07/21 职场文书
2015年行政管理人员工作总结
2015/10/15 职场文书
浅谈golang package中init方法的多处定义及运行顺序问题
2021/05/06 Golang
python高温预警数据获取实例
2022/07/23 Python