如何使用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判断页面刷新或关闭的方法(onbeforeunload与onunload事件)
Jun 22 Javascript
js中的eventType事件及其浏览器支持性介绍
Nov 29 Javascript
Angular 根据 service 的状态更新 directive
Apr 03 Javascript
移动端点击图片放大特效PhotoSwipe.js插件实现
Aug 25 Javascript
jQuery插件ajaxFileUpload异步上传文件
Oct 19 Javascript
JavaScript学习笔记--常用的互动方法
Dec 07 Javascript
微信小程序 radio单选框组件详解及实例代码
Jan 10 Javascript
微信小程序 引用其他js文件实现代码
Feb 22 Javascript
vue项目实战总结篇
Feb 11 Javascript
jQuery判断自定义属性data-val用法示例
Jan 07 jQuery
解决vue+router路由跳转不起作用的一项原因
Jul 19 Javascript
JavaScript实现表单验证功能
Dec 09 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网站来路获取代码(针对搜索引擎)
2010/06/08 PHP
php购物车实现代码
2011/10/10 PHP
php 带逗号千位符数字的处理方法
2012/01/10 PHP
PHP autoload与spl_autoload自动加载机制的深入理解
2013/06/05 PHP
解析二进制流接口应用实例 pack、unpack、ord 函数使用方法
2013/06/18 PHP
PHP实现二叉树的深度优先与广度优先遍历方法
2015/09/28 PHP
php实现微信扫码自动登陆与注册功能
2016/09/22 PHP
PHP实现简易blog的制作
2016/10/24 PHP
PHP-X系列教程之内置函数的使用示例
2017/10/16 PHP
使用composer命令加载vendor中的第三方类库 的方法
2019/07/09 PHP
用javascript实现兼容IE7的类库 IE7_0_9.zip提供下载
2007/08/08 Javascript
一个基于jQuery的树型插件(OrangeTree)使用介绍
2012/05/03 Javascript
js调用css属性写法
2013/09/21 Javascript
Javascript脚本实现静态网页加密实例代码
2013/11/05 Javascript
项目中常用的JS方法整理
2015/01/30 Javascript
利用bootstrapValidator验证UEditor
2016/09/14 Javascript
js改变html的原有内容实现方法
2016/10/05 Javascript
two.js之实现动画效果示例
2017/11/06 Javascript
jQuery实现使用sort方法对json数据排序的方法
2018/04/17 jQuery
详解vue-router的导航钩子(导航守卫)
2020/11/02 Javascript
python二分查找算法的递归实现方法
2016/05/12 Python
浅谈Python peewee 使用经验
2017/10/20 Python
利用python编写一个图片主色转换的脚本
2017/12/07 Python
python在html中插入简单的代码并加上时间戳的方法
2018/10/16 Python
Python格式化输出字符串方法小结【%与format】
2018/10/29 Python
Python3获取拉勾网招聘信息的方法实例
2019/04/03 Python
Python操作Excel工作簿的示例代码(\*.xlsx)
2020/03/23 Python
入党申请书自我鉴定
2013/10/12 职场文书
总经理岗位职责
2013/11/09 职场文书
小学生班会演讲稿
2014/01/09 职场文书
初中班主任评语
2014/04/24 职场文书
副乡长群众路线教育实践活动个人对照检查材料
2014/09/19 职场文书
投诉信格式范文
2015/07/02 职场文书
2016年大学生就业指导课心得体会
2015/10/09 职场文书
RestTemplate如何通过HTTP Basic Auth认证示例说明
2022/03/17 Java/Android
vue中this.$http.post()跨域和请求参数丢失的解决
2022/04/08 Vue.js