如何使用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写的评论分页(还不错)
Dec 23 Javascript
js 立即调用的函数表达式如何写
Jan 12 Javascript
js处理自己不能定义二维数组的方法详解
Mar 03 Javascript
js实现点击后将文字或图片复制到剪贴板的方法
Aug 04 Javascript
JavaScript中使用document.write向页面输出内容实例
Oct 16 Javascript
Javascript window对象详解
Nov 12 Javascript
js实现的动画导航菜单效果代码
Sep 10 Javascript
vuejs在解析时出现闪烁的原因及防止闪烁的方法
Sep 19 Javascript
React Native中导航组件react-navigation跨tab路由处理详解
Oct 31 Javascript
vue滚动tab跟随切换效果
Jun 29 Javascript
解决layui弹框失效的问题
Sep 09 Javascript
Bootstrap table 实现树形表格联动选中联动取消功能
Sep 30 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
dedecms系统常用术语汇总
2007/04/03 PHP
PHP insert语法详解
2008/06/07 PHP
PHP语言中global和$GLOBALS[]的分析 之二
2012/02/02 PHP
深入eAccelerator与memcached的区别详解
2013/06/06 PHP
typecho插件编写教程(四):插件挂载
2015/05/28 PHP
Ubuntu彻底删除PHP7.0的方法
2018/07/27 PHP
laravel框架中间件简单使用方法示例
2020/01/25 PHP
Nigma vs Liquid BO3 第一场2.13
2021/03/10 DOTA
浅析JQuery UI Dialog的样式设置问题
2013/12/18 Javascript
Javascript小技巧之生成html元素
2014/05/15 Javascript
自写的jQuery异步加载数据添加事件
2014/05/15 Javascript
通过$(this)使用jQuery包装后的方法或属性
2014/05/18 Javascript
javascript将数字转换整数金额大写的方法
2015/01/27 Javascript
详解JavaScript对Date对象的操作问题(生成一个倒数7天的数组)
2015/10/01 Javascript
基于jquery实现省市联动特效
2015/12/17 Javascript
JavaScript中清空数组的三种方式
2017/03/22 Javascript
EasyUI的DataGrid每行数据添加操作按钮的实现代码
2017/08/22 Javascript
JS实现为动态创建的元素添加事件操作示例
2018/03/17 Javascript
JS遍历DOM文档树的方法实例详解
2018/04/03 Javascript
Vue实现类似Spring官网图片滑动效果方法
2019/03/01 Javascript
js闭包的9个使用场景
2020/12/29 Javascript
[50:34]VGJ.T vs Fnatic 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python 与GO中操作slice,list的方式实例代码
2017/03/20 Python
分享一个可以生成各种进制格式IP的小工具实例代码
2017/07/28 Python
Python实现字符串的逆序 C++字符串逆序算法
2020/05/28 Python
python实现按长宽比缩放图片
2018/06/07 Python
Python3利用Dlib实现摄像头实时人脸检测和平铺显示示例
2019/02/21 Python
详解python中eval函数的作用
2019/10/22 Python
Python如何实现后端自定义认证并实现多条件登陆
2020/06/22 Python
总结Pyinstaller的坑及终极解决方法(小结)
2020/09/21 Python
Python基于unittest实现测试用例执行
2020/11/25 Python
在HTML5 canvas里用卷积核进行图像处理的方法
2018/05/02 HTML / CSS
详解HTML5常用的语义化标签
2019/09/27 HTML / CSS
编写strcpy函数
2014/06/24 面试题
合作经营协议书范本
2014/04/17 职场文书
财务经理岗位职责
2015/01/31 职场文书