当前位置: 首页 > Web前端 > HTML

关于如何用Vue实现弹窗——一个简单的组件实现

时间:2023-04-02 12:02:57 HTML

//设置位置在最外层.dialog{position:relative;颜色:#2e2c2d;字体大小:16px;}//Mask设置背景层,z-index值必须足够大以保证覆盖,高和宽设置为全屏以实现全屏mask.dialog-cover{background:rgba(0,0,0,0.8);位置:固定;z-指数:200;顶部:0;左:0;宽度:100%;高度:100%;}//内容层的z-index必须大于mask,否则会被覆盖,.dialog-content{position:fixed;顶部:35%;//移动端使用felx布局display:flex;弹性方向:列;证明内容:居中;对齐项目:居中;z-index:300;前言最近在使用element-ui框架和Dialog对话框组件。大概的效果是我之前在手机项目中做的那个。弹出窗口组件类似。然后就想着把这个弹窗组件的实现分享给大家。下面这篇文章就带大家动手实现一个弹窗组件。这篇文章的主要内容会涉及弹窗遮罩的实现,slotslot、props、$emit参数的使用,具体的组件代码也上传了。喜欢的话可以点赞/关注,支持一下。希望你看完这篇文章后有所收获。看一下我的个人博客:obkoro1.com组件的最终效果实现步骤首先构建组件的html和css样式,遮罩层和内容层。自定义弹窗内容:弹窗组件通过slot槽接受父组件传来的弹窗内容。自定义弹窗样式:弹窗组件通过props接收父组件传来的弹窗宽度、上下左右位置。组件开关:从父组件传入的props控制组件的显示和隐藏。当子组件关闭时,事件$emit触发父组件改变值。1.构建组件的html和css样式。HTML结构:一层遮罩层,一层内容层,内容层里面有一个header标题,主要内容和一个关闭按钮。以下是组件中的html结构。有一些东西会在以后补充。不懂的可以先跳过。下面是组件中主要的css样式,注释很全,主要是效果掩蔽是通过z-index和背景实现的。具体内容的css可以根据自己的需要设置。//设置位置在最外层.dialog{position:relative;颜色:#2e2c2d;字体大小:16px;}//Mask设置背景层,z-index值必须足够大以保证覆盖,高和宽设置为全屏以实现全屏mask.dialog-cover{background:rgba(0,0,0,0.8);位置:固定;z-指数:200;顶部:0;左:0;宽度:100%;高度:100%;}//内容层的z-index必须大于mask,否则会被覆盖,.dialog-content{position:fixed;顶部:35%;//移动端使用felx布局display:flex;弹性方向:列;证明内容:居中;对齐项目:居中;z-index:300;---2.在通过槽位自定义弹窗内容的步骤中,只要了解槽位的作用和用法,就没有问题。单槽:这是没有传入槽时才显示的弹窗内容上面是单槽,也叫默认槽,使用槽的正确姿势在父组件中:

Thisissomeinitialcontent

Thisismoreinitialcontent

ps:如果子组件包含slots,那么上面p标签的内容就会被丢弃。Namedslot:所谓namedslot就是给slot标签赋予一个name属性。namedslot可以将父组件中不同的内容片段放在子组件的不同位置。命名槽仍然可以有一个默认槽。下面看一下弹窗组件slot的使用方法:提示信息
弹窗内容
在父组件中使用:将弹窗组件引入到要使用的组件中,通过components注册为组件。在父组件中使用弹窗组件槽的方法如下。插入到名为header的slot标签
这里是插入内容的slot的名字子组件作为main在里面,可以在父组件中添加类定义样式、事件类型等操作
组件中使用的槽的介绍到此结束,槽的应用在弹窗组件中就是一个典型的栗子。可以看到slot的功能还是挺强大的,而且slot本身的使用也不难。同学们爱上老虎机了吗?---3。使用props控制弹窗显示&&自定义弹窗样式psops是Vue中父组件向子组件传递数据的一种方式。不熟悉的朋友可以看看道具文档。因为弹窗组件是在其他组件中使用的,为了适应不同组件场景下的弹窗,弹窗组件必须具有一定的可定制性,否则这样的组件将毫无意义,如下如何使用props,以弹窗组件为例:首先需要在传入的组件中定义props的一些特性,比如校验。然后在父组件中绑定props数据。在父组件中使用:ps:props传递数据不是双向绑定,而是单向数据流。当父组件的数据发生变化时,也会传递给子组件,也就是说我们不应该去修改子组件中的props。所以当我们关闭弹窗时,需要通过$emit修改父组件的数据,然后数据会自动传给子组件。现在基本上所有的弹窗组件都实现了,还有一个弹窗关闭事件,涉及到子组件给父组件传递参数。4.$emit触发父组件修改数据的事件,并关闭弹窗。在Vue中,子组件向父组件传递参数。很多都是使用$emit来触发父组件修改数据的事件。在子组件中,点击关闭或覆盖图层时会触发如下方法:methods:{closeMyself(){this.$emit("on-close");//如果需要传递参数,可以使用“on-close后添加参数”,然后在父组件的函数中接收。父组件中写入://"on-closeis监听子组件的时间是否触发,触发时执行closeDialog函数方法:{closeDialog(){//this.status.isShowPublish=false;//设置绑定的弹窗数组为false关闭弹窗window},}可以使用弹窗组件实现如下信息显示或事件交互:上面的弹窗组件代码将弹窗的每一步都分离出来,逐级解析,每一步都是解释清楚了,具体接的话可以看代码,再结合文章讲的很清楚。总结:这个弹窗组件实现起来一点都不难,我主要提供一个实现方法在这里,当项目中有需要的时候,你也可以自己做一个,以上就是本文的内容。希望同学们读后有所收获。希望看完的朋友能喜欢,也可以关注我。你的支持对我来说是最大的。鼓励。最后:如需转载,请放上原文链接并署名。码字不易,谢谢支持!我是抱着交流记录的心态写文章的。不好的地方不想撕,欢迎指出。2018.4.21以上个人博客和掘金个人主页参考:Vue文档-Slot