如何使用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中的几个运算符
Jun 29 Javascript
javascript中节点的最近的相关节点访问方法
Mar 20 Javascript
JavaScript italics方法入门实例(把字符串显示为斜体)
Oct 17 Javascript
js判断浏览器类型及设备(移动页面开发)
Jul 30 Javascript
全面解析Bootstrap图片轮播效果
Dec 03 Javascript
轻量级jQuery插件slideBox实现带底栏轮播(焦点图)代码
Mar 28 Javascript
jQuery动态改变多行文本框高度的方法
Sep 07 Javascript
基于canvas的二维码邀请函生成插件
Feb 14 Javascript
layer设置maxWidth及maxHeight解决方案
Jul 26 Javascript
关于layui的下拉搜索框异步加载数据的解决方法
Sep 28 Javascript
Vue基于iview table展示图片实现点击放大
Aug 05 Javascript
Vue axios 跨域请求无法带上cookie的解决
Sep 08 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分页函数
2006/10/09 PHP
PHP中extract()函数的妙用分析
2012/07/11 PHP
php缩放gif和png图透明背景变成黑色的解决方法
2014/10/14 PHP
php实现简单加入购物车功能
2017/03/07 PHP
javascript showModalDialog模态对话框使用说明
2009/12/31 Javascript
Jquery 插件学习实例1 插件制作说明与tableUI优化
2010/04/02 Javascript
jquery 弹出层注册页面等(asp.net后台)
2010/06/17 Javascript
12种不宜使用的Javascript语法整理
2013/11/04 Javascript
javascript scrollTop正解使用方法
2013/11/14 Javascript
jquery 提示信息显示后自动消失的具体实现
2013/12/18 Javascript
coffeescript使用的方式汇总
2015/08/05 Javascript
js使用cookie记录用户名的方法
2015/11/26 Javascript
关于微信中a链接无法跳转问题
2016/08/02 Javascript
jQuery 控制文本框自动缩小字体填充
2017/06/16 jQuery
VueRouter导航守卫用法详解
2017/12/25 Javascript
Express进阶之log4js实用入门指南
2018/02/10 Javascript
Vue 源码分析之 Observer实现过程
2018/03/29 Javascript
JS使用遮罩实现点击某区域以外时弹窗的弹出与关闭功能示例
2018/07/31 Javascript
在vue中v-bind使用三目运算符绑定class的实例
2018/09/29 Javascript
微信小程序传值以及获取值方法的详解
2019/04/29 Javascript
JavaScript中this的学习笔记及用法整理
2020/02/17 Javascript
Python基础语言学习笔记总结(精华)
2017/11/14 Python
快速了解python leveldb
2018/01/18 Python
Python基于生成器迭代实现的八皇后问题示例
2018/05/23 Python
Python logging模块用法示例
2018/08/28 Python
tensorflow实现简单逻辑回归
2018/09/07 Python
使用python远程操作linux过程解析
2019/12/04 Python
Django Admin 上传文件到七牛云的示例代码
2020/06/20 Python
html5使用canvas画一条线
2014/12/15 HTML / CSS
Strawberrynet草莓网新加坡站:护肤、彩妆、香水及美发产品
2018/08/31 全球购物
英国旅行箱包和行李箱购物网站:Travel Luggage & Cabin Bags
2019/08/26 全球购物
2014年教师节座谈会发言稿
2014/09/10 职场文书
2015年个人现实表现材料
2014/12/10 职场文书
2015年端午节国旗下演讲稿
2015/03/19 职场文书
超详细教你怎么升级Mysql的版本
2021/05/19 MySQL
JS中如何优雅的使用async await详解
2021/10/05 Javascript