如何使用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 相关文章推荐
jquery网页回到顶部效果(图标渐隐,自写)
Jun 16 Javascript
js实现交换运动效果的方法
Apr 10 Javascript
Javascript实现鼠标右键特色菜单
Aug 04 Javascript
javascript下拉列表中显示树形菜单的实现方法
Nov 17 Javascript
使用 stylelint检查CSS_StyleLint
Apr 28 Javascript
JS函数的定义与调用方法推荐
May 12 Javascript
微信小程序 解决请求服务器手机预览请求不到数据的方法
Jan 04 Javascript
Bootstrap 3 进度条的实现
Feb 22 Javascript
node下使用UglifyJS压缩合并JS文件的方法
Mar 07 Javascript
微信小程序webview与h5通过postMessage实现实时通讯的实现
Aug 20 Javascript
vue开发中遇到的问题总结
Apr 07 Javascript
详解JS ES6编码规范
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
PHP5.2下chunk_split()函数整数溢出漏洞 分析
2007/06/06 PHP
php数组函数序列之array_push() 数组尾部添加一个或多个元素(入栈),返回新长度。
2011/11/07 PHP
PHP6新特性分析
2016/03/03 PHP
常用js脚本
2006/12/03 Javascript
jQuery 源码分析笔记(7) Queue
2011/06/19 Javascript
javascript复制对象使用说明
2011/06/28 Javascript
JS显示日历和天气的方法
2016/03/01 Javascript
jQuery javascript获得网页的高度与宽度的实现代码
2016/04/26 Javascript
原生javascript实现分享到朋友圈功能 支持ios和android
2016/05/11 Javascript
深入理解React中es6创建组件this的方法
2016/08/29 Javascript
js实现小窗口拖拽效果
2016/12/03 Javascript
vue中路由验证和相应拦截的使用详解
2017/12/13 Javascript
使用Vue.js开发微信小程序开源框架mpvue解析
2018/03/20 Javascript
用ES6写全屏滚动插件的示例代码
2018/05/02 Javascript
JavaScript常见JSON操作实例分析
2018/08/08 Javascript
electron实现静默打印的示例代码
2019/08/12 Javascript
vue实现select下拉显示隐藏功能
2019/09/30 Javascript
关于JS模块化的知识点分享
2019/10/16 Javascript
jQuery 选择方法及$(this)用法实例分析
2020/05/19 jQuery
[00:44]TI7不朽珍藏III——军团指挥官不朽展示
2017/07/15 DOTA
python利用hook技术破解https的实例代码
2013/03/25 Python
Python 的描述符 descriptor详解
2016/02/27 Python
python多进程提取处理大量文本的关键词方法
2018/06/05 Python
利用Python半自动化生成Nessus报告的方法
2019/03/19 Python
python 多进程共享全局变量之Manager()详解
2019/08/15 Python
canvas基础之图形验证码的示例
2018/01/02 HTML / CSS
html5跳转小程序wx-open-launch-weapp踩坑
2020/12/02 HTML / CSS
泰国综合购物网站:Lazada泰国
2018/04/09 全球购物
阿拉伯时尚购物网站:Nisnass
2021/02/07 全球购物
老师推荐信
2013/10/28 职场文书
仓库主管的岗位职责
2013/12/04 职场文书
普通话演讲稿
2014/09/03 职场文书
广告设计专业毕业生自我鉴定
2014/09/27 职场文书
MySQL 不等于的三种使用及区别
2021/06/03 MySQL
Javascript的promise,async和await的区别详解
2022/03/24 Javascript
Java 获取Word中所有的插入和删除修订的方法
2022/04/06 Java/Android