如何使用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 NodeTree导航栏(菜单项JSON类型/自制)
Feb 01 Javascript
onmouseover和onmouseout的一些问题思考
Aug 14 Javascript
node.js中使用socket.io制作命名空间
Dec 15 Javascript
javascript实现行拖动的方法
May 27 Javascript
js实现Select列表各项上移和下移的方法
Aug 14 Javascript
Jquery-1.9.1源码分析系列(十一)之DOM操作
Nov 25 Javascript
jQuery抛物线运动实现方法(附完整demo源码下载)
Jan 08 Javascript
AngularJS中关于ng-class指令的几种实现方式详解
Sep 17 Javascript
微信小程序 简单DEMO布局,逻辑,样式的练习
Nov 30 Javascript
jQuery事件详解
Feb 23 Javascript
微信小程序如何获取群聊的openGid以及名称详解
Jul 17 Javascript
LayUI switch 开关监听 获取属性值、更改状态的方法
Sep 21 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实现快速排序的三种方法分享
2014/03/12 PHP
php getcwd与dirname(__FILE__)区别详解
2016/09/24 PHP
PHP命名空间namespace的定义方法详解
2017/03/29 PHP
jBox 2.3基于jquery的最新多功能对话框插件 常见使用问题解答
2011/11/10 Javascript
JavaScript高级程序设计(第3版)学习笔记2 js基础语法
2012/10/11 Javascript
Jquery动态进行图片缩略的原理及实现
2013/08/13 Javascript
火狐下input焦点无法重复获取问题的解决方法
2014/06/16 Javascript
DOM节点删除函数removeChild()用法实例
2015/01/12 Javascript
javascript跨域的方法汇总
2015/10/23 Javascript
jQuery动态添加
2016/04/07 Javascript
jQuery实现html table行Tr的复制、删除、计算功能
2017/07/10 jQuery
JS获取一个表单字段中多条数据并转化为json格式
2017/10/17 Javascript
vue实现文章内容过长点击阅读全文功能的实例
2017/12/28 Javascript
JS实现点击按钮随机生成可拖动的不同颜色块示例
2019/01/30 Javascript
解决antd datepicker 获取时间默认少8个小时的问题
2020/10/29 Javascript
JavaScript中展开运算符及应用的实例代码
2021/01/14 Javascript
Python抓取Discuz!用户名脚本代码
2013/12/30 Python
Python查询阿里巴巴关键字排名的方法
2015/07/08 Python
Python抓取手机号归属地信息示例代码
2016/11/28 Python
Python通过future处理并发问题
2017/10/17 Python
python内置函数sorted()用法深入分析
2019/10/08 Python
pytorch AvgPool2d函数使用详解
2020/01/03 Python
Python3内置函数chr和ord实现进制转换
2020/06/05 Python
Keras自动下载的数据集/模型存放位置介绍
2020/06/19 Python
canvas实现俄罗斯方块的方法示例
2018/12/13 HTML / CSS
英国花园、DIY、电器和家居用品商店:Robert Dyas
2019/03/18 全球购物
CK巴西官方网站:Calvin Klein巴西
2019/07/19 全球购物
策划主管的工作职责
2013/11/24 职场文书
营业员演讲稿
2013/12/30 职场文书
科级干部考察材料
2014/02/15 职场文书
小学生学习感言
2014/03/10 职场文书
总经理工作职责范文
2014/03/14 职场文书
2014年会计人员工作总结
2014/12/10 职场文书
2015学校图书管理员工作总结
2015/05/11 职场文书
2015年学校减负工作总结
2015/05/19 职场文书
道士塔读书笔记
2015/06/30 职场文书