vue常用组件之confirm
一些自带的方法,比如alert,confirm等,往往由于浏览器不同而展现出不同的样式,可以使用layer.confirmvar self = thisthis.$layer.confirm('邀请成功!',{type: 0,title: '信息',area...
·
一些自带的方法,比如alert,confirm等,往往由于浏览器不同而展现出不同的样式,可以使用layer.confirm
var self = this
this.$layer.confirm('邀请成功!',{
type: 0,
title: '信息',
area: 'auto',
offset: 'auto',
icon: -1,
btn: ['继续','返回'],
time: 0,
shade: true,
tips: [0, {}],
tipsMore: true,
shadeClose: true
},function(){
//继续函数
self.$layer.close(index);
}, function(){
//返回函数
self.$layer.closeAll();
});
为了统一,我们可以自己实现简单封装,下面代码是vue的一个组件,它简单实现了confirm功能。代码如下:
<!--
*
* 确认对话框
*
* 使用方法:
* <confirm :show-dialog="showDialog" :ok-text="'删除'" :cancel-text="'取消'" :content="'content'" v-on:confirm="confirmFn" v-on:cancel="cancelFn" v-on:confirmhide="confirmFn" :hide-confirm="false"></confirm>
*
* show-dialog: 是否显示对话框,布尔值
* ok-text: 确认按钮文字,默认为‘好’
* cancel-text: 取消按钮文字,默认为‘取消’
* hideConfirm: 是否隐藏删除按钮
* hideCancle 是否隐藏取消按钮
* content: 对话框文字
* confirmFn: 确定按钮回调
* cancelFn: 取消按钮回调
-->
<template>
<div class="dialog" v-if="showDialog">
<transition name="dialog-fade">
<div class="dialog-bg" v-if="showDialog" @click="confirmHide"></div>
</transition>
<transition name="dialog-show">
<div class="dialog-box" v-if="showDialog">
<div class="dialog-main" v-html="content"></div>
<div class="dialog-button">
<div class="dialog-confirm-button" @click="clickConfirm" v-if="!hideConfirm">{{okText || '好'}}</div>
<div class="dialog-confirm-button" @click="clickCancel" v-if="!hideCancle">{{cancelText || '取消'}}</div>
</div>
</div>
</transition>
</div>
</template>
<script>
export default{
data(){
return{}
},
props: ['showDialog','content','okText','cancelText','hideConfirm','hideCancle'],
methods: {
clickCancel() {
this.$emit('cancel');
},
clickConfirm() {
this.$emit('confirm');
},
confirmHide(){
this.$emit('confirmhide')
}
}
}
</script>
<style scoped lang="less">
.dialog {
position: fixed;
top: 0; left: 0;
width: 100%;
height: 100%;
z-index: 100;
&-bg {
position: absolute;
top: 0; left: 0;
width: 100%;
height: 100%;
background-color: rgba(0,0,0,.4);
}
&-box {
min-width: 250px;
max-width: 1500px;
min-height: 100px;
position: absolute;
top: 40%;
left: 50%;
-webkit-transform: translate3d(-50%,-50%,0);
transform: translate3d(-50%,-50%,0);
background-color: #fff;
border-radius: .1rem;
line-height: 1.5;
text-align: center;
}
&-main {
min-height: 65px;
padding: 20px;
text-align: left;
font-size: 1rem;
color:#333;
margin: 0;
outline: none;
}
&-button {
text-align: right;
padding: 0 8px 0 0;
box-sizing: border-box;
padding: 0;
margin: 0;
outline: none;
overflow: hidden;
border-top: 1px solid #EEE;
font-size: .32rem;
line-height: .88rem;
display: flex;
}
&-confirm {
&-cancel {
flex:1;
border-right: 1px solid #EEE;
margin-right: -1px;
position: relative;
display: inline-block;
padding: 6px 10px;
margin-bottom: 0;
font-size: 14px;
min-width: 10px;
text-align: center;
white-space: nowrap;
vertical-align: top;
cursor: pointer;
border: 1px solid #dddee1;
border-radius: 4px;
outline: 0;
color: #fff;
background-color: #20a0ff;
border: 1px solid #0695ff;
}
&-button {
flex:1;
position: relative;
display: inline-block;
padding: 6px 10px;
margin-bottom: 0;
font-size: 14px;
min-width: 10px;
text-align: center;
white-space: nowrap;
vertical-align: top;
cursor: pointer;
background-color: #f7f7f7;
border: 1px solid #dddee1;
border-radius: 4px;
outline: 0;
color: #333;
font-size: 1.1rem;
}
}
.dialog-show-enter-active, .dialog-fade-enter-active {
transition: all .3s ease;
}
.dialog-show-leave-active, .dialog-fade-leave-active {
transition: all .3s ease;
}
.dialog-show-enter, .dialog-show-leave-active {
top: -35%;
}
.dialog-fade-enter, .dialog-fade-leave-active {
opacity: 0;
}
}
</style>
更多推荐
已为社区贡献15条内容
所有评论(0)