如何使用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 相关文章推荐
vs2003 js文件编码问题的解决方法
Mar 20 Javascript
使用typeof方法判断undefined类型
Sep 09 Javascript
基于jQuery实现的文字按钮表单特效整理
Dec 07 Javascript
javascript抽象工厂模式详细说明
Dec 16 Javascript
jquery实现可点击伸缩与展开的菜单效果代码
Aug 31 Javascript
jQuery实现订单提交页发送短信功能前端处理方法
Jul 04 Javascript
Angularjs实现控制器之间通信方式实例总结
Mar 27 Javascript
webpack4.x开发环境配置详解
Aug 04 Javascript
vue中的watch监听数据变化及watch中各属性的详解
Sep 11 Javascript
JS实现利用闭包判断Dom元素和滚动条的方向示例
Aug 26 Javascript
JavaScript实现飞舞的泡泡效果
Feb 07 Javascript
JavaScript枚举选择jquery插件代码实例
Nov 17 jQuery
使用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
全国FM电台频率大全 - 5 内蒙古自治区
2020/03/11 无线电
PHP开发制作一个简单的活动日程表Calendar
2016/06/20 PHP
PHP 微信扫码支付源代码(推荐)
2016/11/03 PHP
PDO::_construct讲解
2019/01/27 PHP
用roll.js实现的图片自动滚动+鼠标触动的特效
2007/03/18 Javascript
由JavaScript技术实现的web小游戏(不含网游)
2010/06/12 Javascript
jQuery判断div随滚动条滚动到一定位置后停止
2014/04/02 Javascript
JS 在指定数组中随机取出N个不重复的数据
2014/06/10 Javascript
JavaScript对象数组的排序处理方法
2015/10/21 Javascript
sso跨域写cookie的一段js脚本(推荐)
2016/05/25 Javascript
JS实现的幻灯片切换显示效果
2016/09/07 Javascript
创建一般js对象的几种方式
2017/01/19 Javascript
详解Angular 4.x 动态创建组件
2017/04/25 Javascript
微信小程序实现滑动删除效果
2017/05/19 Javascript
详解用webpack把我们的业务模块分开打包的方法
2017/07/20 Javascript
AngularJS自定义过滤器用法经典实例总结
2018/05/17 Javascript
微信小程序之数据绑定原理解析
2019/08/14 Javascript
vue中@change兼容问题详解
2019/10/25 Javascript
jQuery实现简易QQ聊天框
2020/02/10 jQuery
[04:40]2016个国际邀请赛中国区预选赛场地——华西村观战指南
2016/06/25 DOTA
在Linux命令行终端中使用python的简单方法(推荐)
2017/01/23 Python
浅谈python实现Google翻译PDF,解决换行的问题
2018/11/28 Python
python实现AES加密与解密
2019/03/28 Python
python 猴子补丁(monkey patch)
2019/06/26 Python
使用matlab或python将txt文件转为excel表格
2019/11/01 Python
解决Keras使用GPU资源耗尽的问题
2020/06/22 Python
国际领先的学术出版商:Springer
2017/01/11 全球购物
马来西亚在线购物市场:PGMall.my
2019/10/13 全球购物
生产车间班组长岗位职责
2014/01/06 职场文书
刚毕业大学生自荐信范文
2014/02/20 职场文书
优乐美广告词
2014/03/14 职场文书
舞蹈兴趣小组活动总结
2014/07/07 职场文书
合作经营协议书范本
2014/09/16 职场文书
就业意向协议书
2015/01/29 职场文书
SQL Server中使用判断语句(IF ELSE/CASE WHEN )案例
2021/07/07 SQL Server
Python学习之迭代器详解
2022/04/01 Python