时间:2021-05-18
【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%; 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创建模态框内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
模态框是我们UI控件中一个很重要的组件,使用场景有很多种,我们在Vue组件中创建模态框组件而用到的一个知识点是利用Vue.extend来创建。文档中的解释是在最
BootStrap模态框简单概述BootstrapModals(模态框)是使用定制的Jquery插件创建的。它可以用来创建模态窗口丰富用户体验,或者为用户添加实
在MFC中对话框有两种形式,一个是模态对话框(modeldialogbox),一个是非模态对话框(modelessdialogbox)。本文对此分别简述其创建方
下表列出了模态框中要用到事件。这些事件可在函数中当钩子使用。实例下面的实例演示了事件的用法:Bootstrap实例-模态框(Modal)插件事件模态框(Moda
在vue2.5.0+中slot-scope替代了scopetemplate的使用情形为,我们已经封装好一个组建,预留了插槽,使用的插槽首先我们的创建一个组建组建