如何使用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 keycode总结
Feb 04 Javascript
JQuery扩展插件Validate 3通过参数设置错误信息
Sep 05 Javascript
JS网页在线获取鼠标坐标值的方法
Feb 28 Javascript
JavaScript中property和attribute的区别详细介绍
Mar 03 Javascript
莱鸟介绍javascript onclick事件
Jan 06 Javascript
Javascript中 toFixed四舍六入方法
Aug 21 Javascript
小程序分页实践之编写可复用分页组件
Jul 18 Javascript
vue element 中的table动态渲染实现(动态表头)
Nov 21 Javascript
Javascript实现html转pdf高清版(提高分辨率)
Feb 19 Javascript
云服务器部署Node.js项目的方法步骤(小白系列)
Mar 23 Javascript
微信小程序实现锚点跳转
Nov 23 Javascript
JavaScript 事件捕获冒泡与捕获详情
Nov 11 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
网络资源
2006/10/09 PHP
php获取本周星期一具体日期的方法
2015/04/20 PHP
php微信公众平台开发(一) 配置接口
2016/12/06 PHP
详解PHP字符串替换str_replace()函数四种用法
2017/10/13 PHP
PHP调用全国天气预报数据接口查询天气示例
2019/02/20 PHP
Jquery 获取表单text,areatext,radio,checkbox,select值的代码
2009/11/12 Javascript
jquery的相对父元素和相对文档定位示例代码
2013/08/02 Javascript
基于NodeJS的前后端分离的思考与实践(六)Nginx + Node.js + Java 的软件栈部署实践
2014/09/26 NodeJs
实用框架(iframe)操作代码
2014/10/23 Javascript
JavaScript学习笔记之基础语法
2015/01/22 Javascript
深入理解jquery跨域请求方法
2016/05/18 Javascript
js中用cssText设置css样式的简单方法
2016/09/19 Javascript
JS中的Replace()传入函数时的用法详解
2017/09/11 Javascript
利用vue.js实现被选中状态的改变方法
2018/02/08 Javascript
详解Node.js异步处理的各种写法
2019/06/09 Javascript
Jquery滑动门/tab切换实现方法完整示例
2020/06/05 jQuery
你不知道的SpringBoot与Vue部署解决方案
2020/11/09 Javascript
vue图片裁剪插件vue-cropper使用方法详解
2020/12/16 Vue.js
原生JavaScript实现购物车
2021/01/10 Javascript
Python脚本实现集群检测和管理功能
2015/03/06 Python
Python实现获取操作系统版本信息方法
2015/04/08 Python
学习Python3 Dlib19.7进行人脸面部识别
2018/01/24 Python
python实现俄罗斯方块游戏
2020/03/25 Python
解决vscode python print 输出窗口中文乱码的问题
2018/12/03 Python
Python 日期区间处理 (本周本月上周上月...)
2019/08/08 Python
Scrapy基于scrapy_redis实现分布式爬虫部署的示例
2020/09/29 Python
玩转CSS3色彩
2010/01/16 HTML / CSS
使用Html5多媒体实现微信语音功能
2019/07/26 HTML / CSS
学生手册评语
2014/05/05 职场文书
安全生产目标管理责任书
2014/07/25 职场文书
党的群众路线教育实践活动个人整改措施落实情况
2014/11/04 职场文书
工作会议通知
2015/04/15 职场文书
解决numpy数组互换两行及赋值的问题
2021/04/17 Python
Django显示可视化图表的实践
2021/05/10 Python
Python标准库pathlib操作目录和文件
2021/11/20 Python
MyBatis XPathParser解析器使用范例详解
2022/07/15 Java/Android