如何使用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 相关文章推荐
Js 刷新框架页的代码
Apr 13 Javascript
node.js中的fs.fsyncSync方法使用说明
Dec 15 Javascript
jquery图片播放浏览插件prettyPhoto使用详解
Dec 19 Javascript
jquery实现的3D旋转木马特效代码分享
Aug 25 Javascript
Bootstrap基本样式学习笔记之表格(2)
Dec 07 Javascript
JS 设置Cookie 有效期 检测cookie
Jun 15 Javascript
基于Vue.js 2.0实现百度搜索框效果
Dec 28 Javascript
Angularjs实现控制器之间通信方式实例总结
Mar 27 Javascript
浏览器事件循环与vue nextTicket的实现
Apr 16 Javascript
keep-Alive搭配vue-router实现缓存页面效果的示例代码
Jun 24 Javascript
详解React 条件渲染
Jul 08 Javascript
浅析JavaScript中的事件委托机制跟深浅拷贝
Jan 20 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中有关字符串的4个函数substr、strrchr、strstr、ereg介绍和使用例子
2014/04/24 PHP
PHP使用array_fill定义多维数组的方法
2015/03/18 PHP
php实现微信支付之现金红包
2018/05/30 PHP
php post json参数的传递和接收处理方法
2018/05/31 PHP
一行代码告别document.getElementById
2012/06/01 Javascript
js 操作select和option常用代码整理
2012/12/13 Javascript
jQuery基础框架浅入剖析
2012/12/27 Javascript
二叉树的非递归后序遍历算法实例详解
2014/02/07 Javascript
js如何调用qq互联api实现第三方登录
2014/03/28 Javascript
jQuery中:empty选择器用法实例
2014/12/30 Javascript
JQuery中节点遍历方法实例
2015/05/18 Javascript
jquery特效 点击展示与隐藏全文
2015/12/09 Javascript
JavaScript File分段上传
2016/03/10 Javascript
js实现文字选中分享功能
2017/01/25 Javascript
JS实现多级菜单中当前菜单不随页面跳转样式而发生变化
2017/05/30 Javascript
Vue.js如何实现路由懒加载浅析
2017/08/14 Javascript
浅谈vue中改elementUI默认样式引发的static与assets的区别
2018/02/03 Javascript
TypeScript基础入门教程之三重斜线指令详解
2018/10/22 Javascript
Jquery的Ajax技术使用方法
2019/01/21 jQuery
JS面向对象之多选框实现
2020/01/17 Javascript
[46:49]完美世界DOTA2联赛PWL S3 access vs Rebirth 第二场 12.19
2020/12/24 DOTA
Python基于Tkinter的HelloWorld入门实例
2015/06/17 Python
python爬取亚马逊书籍信息代码分享
2017/12/09 Python
Notino瑞典:购买香水和美容产品
2019/07/26 全球购物
精选奢华:THE LIST
2019/09/05 全球购物
数据库专业英语
2012/11/30 面试题
大学生入党思想汇报
2014/01/01 职场文书
学习雷锋精神演讲稿
2014/05/10 职场文书
献爱心捐款倡议书
2014/05/14 职场文书
市场营销策划方案
2014/06/11 职场文书
银行求职自荐书
2014/06/25 职场文书
主婚人致辞精选
2015/07/28 职场文书
幼儿园小班教师随笔
2015/08/14 职场文书
2016党员学习心得体会范文
2016/01/23 职场文书
《清澈的湖水》教学反思
2016/02/17 职场文书
ztree+ajax实现文件树下载功能
2021/05/18 Javascript