vue封装一个弹框组件
这是一个提示框和对话框,例:
这是一个组件 eject.vue
<template>
<div class='kz-cont' v-show='showstate'>
<div class='kz-wrapper' >
<div class='kz-text'>
<strong><slot name='text' ></slot></strong>
</div>
<div class='footer'>
<div @click='tocancel' class='kz-btn'>取消</div>
<div class='kz-btn' @click='took'>确定</div>
</div>
</div>
</div>
</template>
<script>
export default{
name:'eject',
props:['type','showstate'],
methods:{
tocancel:function(){
this.$emit('tocancel');
},
took:function(){
this.$emit('took');
}
}
}
</script>
<style scoped>
.kz-cont{position:fixed;left:0;right: 0;top:0;bottom: 0;z-index: 500;background:rgba(0,0,0,0.3);text-align:center;overflow: hidden;white-space:nowrap;}
.kz-cont:after{content:"";display:inline-block;width:0;height:100%;visibility: hidden;vertical-align:middle;}
.kz-wrapper{display:inline-block;vertical-align:middle;background:#fff;color:#333333;border-radius: 5px;max-width:100%;}
.kz-text{text-align:center;padding:20px 75px;}
.footer{display:flex;border-top:1px solid #E5E5E5;color:#488BF1;}
.kz-btn{flex:1;padding: 12px;}
.kz-btn +.kz-btn{border-left:1px solid #E5E5E5;}
</style>
在子组件调用使用
<script>
import Eject from './eject'
export default{
name:'demo',
components:{
Eject
},
data(){
return {
showa:false,
showc:false,
msg:""
}
},
methods:{
alerts(){
this.showa=true;
},
confirms(){
this.showc=true;
this.msg="这是一个对话的弹窗";
},
okfall(){
this.showa=false;
},
cancelfall(){
this.showc=false;
},
okfall2(){
this.showc=false;
}
}
}
</script>
html代码
<template>
<div class='zk-box'>
<div class='zk-flex zk-pd'>
<div class='zk-btn' @click='alerts'>提示框</div>
<Eject type='alert' @took='okfall' :showstate='showa'>
<span slot='tlt'>提示</span>
<div slot='text'>这是一个提示弹窗</div>
</Eject>
</div>
<div class='zk-flex zk-pd'>
<div class='zk-btn zk-blue' @click='confirms'>对话框</div>
<Eject type='confirm' @took='okfall2' @tocancel='cancelfall' :showstate='showc'>
<span slot='tlt'>确认</span>
<div slot='text'>{{msg}}</div>
</Eject>
</div>
</div>
</template>
整体代码
<template>
<div class='zk-box'>
<div class='zk-flex zk-pd'>
<div class='zk-btn' @click='alerts'>提示框</div>
<Eject type='alert' @took='okfall' :showstate='showa'>
<span slot='tlt'>提示</span>
<div slot='text'>这是一个提示弹窗</div>
</Eject>
</div>
<div class='zk-flex zk-pd'>
<div class='zk-btn zk-blue' @click='confirms'>对话框</div>
<Eject type='confirm' @took='okfall2' @tocancel='cancelfall' :showstate='showc'>
<span slot='tlt'>确认</span>
<div slot='text'>{{msg}}</div>
</Eject>
</div>
</div>
</template>
<script>
import Eject from './eject'
export default{
name:'demo',
components:{
Eject
},
data(){
return {
showa:false,
showc:false,
msg:""
}
},
methods:{
alerts(){
this.showa=true;
},
confirms(){
this.showc=true;
this.msg="这是一个对话的弹窗";
},
okfall(){
this.showa=false;
},
cancelfall(){
this.showc=false;
},
okfall2(){
this.showc=false;
}
}
}
</script>
<style>
.zk-box{display:flex;line-height:0.65rem;font-size:0.26rem;color:#333;padding:4.5rem 0;}
.zk-flex{flex:1;}
.zk-pd{padding:0.5rem 0.1rem;}
.zk-btn{display:block;line-height:0.88rem;text-align:Center;color:#fff;border-radius: 0.12rem;background:#488BF1 ;}
.zk-blue{background:#488BF1;}
</style>
这就是封装好了的组件和使用方法,哪里需要弹窗直接调用就可以了
这是一个提示框和对话框,例:
这是一个组件 eject.vue<template> <div class='kz-cont' v-show='showstate'> <div class='kz-wrapper' > <div class='kz-text'> <strong><slot name='text' ></slot></strong> </div> <div class='footer'> <div @click='tocancel' class='kz-btn'>取消</div> <div class='kz-btn' @click='took'>确定</div> </div> </div> </div></template><script> export default{ name:'eject', props:['type','showstate'], methods:{ tocancel:function(){ this.$emit('tocancel'); }, took:function(){ this.$emit('took'); } } }</script><style scoped> .kz-cont{position:fixed;left:0;right: 0;top:0;bottom: 0;z-index: 500;background:rgba(0,0,0,0.3);text-align:center;overflow: hidden;white-space:nowrap;} .kz-cont:after{content:"";display:inline-block;width:0;height:100%;visibility: hidden;vertical-align:middle;} .kz-wrapper{display:inline-block;vertical-align:middle;background:#fff;color:#333333;border-radius: 5px;max-width:100%;} .kz-text{text-align:center;padding:20px 75px;} .footer{display:flex;border-top:1px solid #E5E5E5;color:#488BF1;} .kz-btn{flex:1;padding: 12px;} .kz-btn +.kz-btn{border-left:1px solid #E5E5E5;}</style>12345678910111213141516171819202122232425262728293031323334353637在子组件调用使用<script> import Eject from './eject' export default{ name:'demo', components:{ Eject }, data(){ return { showa:false, showc:false, msg:"" } }, methods:{ alerts(){ this.showa=true; }, confirms(){ this.showc=true; this.msg="这是一个对话的弹窗"; }, okfall(){ this.showa=false; }, cancelfall(){ this.showc=false; }, okfall2(){ this.showc=false; } } }</script>12345678910111213141516171819202122232425262728293031323334html代码<template> <div class='zk-box'> <div class='zk-flex zk-pd'> <div class='zk-btn' @click='alerts'>提示框</div> <Eject type='alert' @took='okfall' :showstate='showa'> <span slot='tlt'>提示</span> <div slot='text'>这是一个提示弹窗</div> </Eject> </div> <div class='zk-flex zk-pd'> <div class='zk-btn zk-blue' @click='confirms'>对话框</div> <Eject type='confirm' @took='okfall2' @tocancel='cancelfall' :showstate='showc'> <span slot='tlt'>确认</span> <div slot='text'>{{msg}}</div> </Eject> </div> </div></template>123456789101112131415161718整体代码<template> <div class='zk-box'> <div class='zk-flex zk-pd'> <div class='zk-btn' @click='alerts'>提示框</div> <Eject type='alert' @took='okfall' :showstate='showa'> <span slot='tlt'>提示</span> <div slot='text'>这是一个提示弹窗</div> </Eject> </div> <div class='zk-flex zk-pd'> <div class='zk-btn zk-blue' @click='confirms'>对话框</div> <Eject type='confirm' @took='okfall2' @tocancel='cancelfall' :showstate='showc'> <span slot='tlt'>确认</span> <div slot='text'>{{msg}}</div> </Eject> </div> </div></template><script> import Eject from './eject' export default{ name:'demo', components:{ Eject }, data(){ return { showa:false, showc:false, msg:"" } }, methods:{ alerts(){ this.showa=true; }, confirms(){ this.showc=true; this.msg="这是一个对话的弹窗"; }, okfall(){ this.showa=false; }, cancelfall(){ this.showc=false; }, okfall2(){ this.showc=false; } } }</script><style> .zk-box{display:flex;line-height:0.65rem;font-size:0.26rem;color:#333;padding:4.5rem 0;} .zk-flex{flex:1;} .zk-pd{padding:0.5rem 0.1rem;} .zk-btn{display:block;line-height:0.88rem;text-align:Center;color:#fff;border-radius: 0.12rem;background:#488BF1 ;} .zk-blue{background:#488BF1;}</style>123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960这就是封装好了的组件和使用方法,哪里需要弹窗直接调用就可以了————————————————版权声明:本文为CSDN博主「zeke_x」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/weixin_41997724/article/details/82687005
vue封装一个弹框组件的更多相关文章
- vue移动端弹框组件,vue-layer-mobile
最近做一个移动端项目,弹框写的比较麻烦,查找资料,找到了这个组件,但是说明文档比较少,自己研究了下,把我碰到的错,和详细用法分享给大家!有疑问可以打开组件看一看,这个组件是仿layer-mobile的 ...
- vue移动端弹框组件
最近做一个移动端项目,弹框写的比较麻烦,查找资料,找到了这个组件,但是说明文档比较少,自己研究了下,把我碰到的错,和详细用法分享给大家!有疑问可以打开组件看一看,这个组件是仿layer-mobile的 ...
- vue封装公用弹出框方法,实现点击出现操作弹出框
vue封装公用弹出框方法,实现点击出现操作弹出框 如上图所示,这次要实现一个点击出现操作弹框的效果:并将这个功能封装成一个函数,便于在项目的多个地方使用. 具体思路是: 封装一个组件,组件保护一个插槽 ...
- 移动端(H5)弹框组件--简单--实用--不依赖jQuery
俗话说的好,框架是服务与大家的,包含的功能比较多,代码多.在现在追求速度的年代.应该根据自己的需求去封装自己所需要的组件. 下边就给大家介绍一下自己封装的一个小弹框组件,不依赖与jQuery,代码少, ...
- VUE2.0增删改查附编辑添加model(弹框)组件共用
Vue实战篇(增删改查附编辑添加model(弹框)组件共用) 前言 最近一直在学习Vue,发现一份crud不错的源码 预览链接 https://taylorchen709.github.io/vue- ...
- vue实现一个简易Popover组件
概述 之前写vue的时候,对于下拉框,我是通过在组件内设置标记来控制是否弹出的,但是这样有一个问题,就是点击组件外部的时候,怎么也控制不了下拉框的关闭,用户体验非常差. 当时想到的解决方法是:给根实例 ...
- Vue 自定义全局消息框组件
消息弹框组件,默认3秒后自动关闭,可设置info/success/warning/error类型 效果图: 文件目录: Message.vue <template> <transit ...
- vue3系列:vue3.0自定义弹框组件V3Popup|vue3.x手机端弹框组件
基于Vue3.0开发的轻量级手机端弹框组件V3Popup. 之前有分享一个vue2.x移动端弹框组件,今天给大家带来的是Vue3实现自定义弹框组件. V3Popup 基于vue3.x实现的移动端弹出框 ...
- 基于uni-app全端弹框组件uaPopup「兼容h5+小程序+app端|nvue」
uniapp兼容多端自定义模态弹框组件UAPopup ua-popup 一款轻量级的uniapp自定义弹窗组件.汇集了android.ios和微信弹窗效果(msg消息.alert提示框.dialog对 ...
随机推荐
- hdu2546 饭卡
Problem Description 电子科大本部食堂的饭卡有一种很诡异的设计,即在购买之前判断余额.如果购买一个商品之前,卡上的剩余金额大于或等于5元,就一定可以购买成功(即使购买后卡上余额为负) ...
- hdu3480 Division
Problem Description Little D is really interested in the theorem of sets recently. There's a problem ...
- poj3661 Running
Description The cows are trying to become better athletes, so Bessie is running on a track for exact ...
- 哈尔滨理工大学软件与微电子学院程序设计竞赛(同步赛) C.Coronavirus (BFS)
题意:有一个图,要求从\(S\)走到\(E\),\(.\)表示可以走的路径,\(*\)周围的八个方向均不能走,要求判断是否能走到\(E\),若能,输出最小路径长度,否则输出\(Impossible\) ...
- Chapter Zero 0.1.2 CPU的架构
CPU的架构 CPU内部含有一些微指令, 我们所使用的软件都要经过CPU内部的微指令集达成才行. 这些指令集的设计又分为两种设计理念, 这就是目前世界上常见的两种主要CPU架构: 精简指令集(Redu ...
- 4.安装fluentd用于收集集群内部应用日志
作者 微信:tangy8080 电子邮箱:914661180@qq.com 更新时间:2019-06-13 11:02:14 星期四 欢迎您订阅和分享我的订阅号,订阅号内会不定期分享一些我自己学习过程 ...
- 2.API的理解和使用
标题 : 2.API的理解和使用 目录 : Redis 序号 : 2 zset的成员是唯一的,但分数(score)却可以重复. 有序集合的内部编码 1.ziplist(压缩列表):当有序集合的 ...
- leetcode_二叉树篇_python
主要是深度遍历和层序遍历的递归和迭代写法. 另外注意:因为求深度可以从上到下去查 所以需要前序遍历(中左右),而高度只能从下到上去查,所以只能后序遍历(左右中). 所有题目首先考虑root否是空.有的 ...
- linux repo init 遇到的问题
问题描述: 利用repo从远程服务器上取代码时候,出现错误 fatal: cannot make .repo directory:Permission denied, 加了sudo 之后,还是不行, ...
- hdu 5874
On an isolated island, lived some dwarves. A king (not a dwarf) ruled the island and the seas nearby ...