本文实例为大家分享了vue弹窗组件的具体代码,供大家参考,具体内容如下
弹窗是一个项目必备的复用利器,所以封装起来,保证项目ui一致,是很有必要的。学了一段时间vue,想想还是用vue写一下吧。用的很小白,但是会写出来了,说明我也有进步一丢丢了。继续加油….
代码贴图如下,样式比较丑,不要介意…
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>ys-vue-modal-component</title> <style> p,h4{
margin:0;
}
.modal{
width: 480px;
background-color: #fff;
border: 1px solid rgba(0, 0, 0, .3);
border-radius: 6px;
box-shadow: 0 4px 12px rgba(0, 0, 0, .5);
margin: 50px;
}
.modal-header {
color: #fff;
background: cadetblue;
border-radius: 6px 6px 0 0;
padding: 15px;
border-bottom: 1px solid #5e9fa1;
}
.modal-content div {
padding: 15px 10px;
}
.modal-footer {
padding: 15px;
text-align: right;
border-top: 1px solid #e5e5e5;
}
.btn {
border: 1px solid #d1d1d1;
border-radius: 3px;
background-color: #f7f7f7;
background: -webkit-gradient(linear, 0 0, 0 100%, from(#f7f7f7), to(#f2f2f2));
background: -moz-gradient(linear, 0 0, 0 100%, from(#f7f7f7), to(#f2f2f2));
background: -o-gradient(linear, 0 0, 0 100%, from(#f7f7f7), to(#f2f2f2));
background: -ms-gradient(linear, 0 0, 0 100%, from(#f7f7f7), to(#f2f2f2));
height: 28px;
padding: 0 20px;
cursor: pointer;
line-height: 28px;
display: inline-block;
color: #666666;
margin-right: 5px;
outline: none;
}
.blue {
border: 1px solid #5e9fa1;
background-color: #5e9fa1;
background: -webkit-gradient(linear, 0 0, 0 100%, from(#74c4c6), to(#5e9fa1));
background: -moz-gradient(linear, 0 0, 0 100%, from(#74c4c6), to(#5e9fa1));
background: -o-gradient(linear, 0 0, 0 100%, from(#74c4c6), to(#5e9fa1));
background: -ms-gradient(linear, 0 0, 0 100%, from(#74c4c6), to(#5e9fa1));
color: #FFFFFF;
}
</style> <script src="https://unpkg.com/vue/dist/vue.js"></script></head><body> <div id="app"> <input type="button" class="btn blue" value="点击我,呼唤弹窗,再来一遍" v-if="isHide" @click="isHide=!isHide"> <ys-modal-component v-if="!isHide" modal-title="温馨提示" ok-btn="确认购买" cancel-btn="去意已决" @on-ok="ok" @on-cancel="cancel" > <div slot="modal-content"> 尊敬的用户,您购买的商品将于支付成功后3-7个工作日内发货,敬请周知。祝您购物愉快! </div> </ys-modal-component> </div> <script> /* props: modalTitle: 弹窗标题 okBtn: 确认按钮 cancelBtn: 取消按钮 注意事项:传参时候使用烤串的书写方式xx-xxx slot: modal-content: 内容区域 modal-footer: 页脚按钮区域 methods: okHandle: 触发确认on-ok自定义事件 cancelHandle: 触发取消on-cancel自定义事件 */ Vue.component('ys-modal-component', {
props: {
modalTitle: {
type: String, default: '标题区域' }
, okBtn: {
type: String, default: '确认' }
, cancelBtn: {
type: String, default: '取消' }
}
, template: ` <div class="modal"> <div class="modal-header"> <h4>{
{
modalTitle }
}
</h4> </div> <div class="modal-content"> <div> <slot name="modal-content">内容区域</slot> </div> </div> <div class="modal-footer"> <input class="btn blue" type="button" v-model="okBtn" @click="okHandle" /> <input class="btn" type="button" v-model="cancelBtn" @click="cancelHandle" /> </div> </div> `, methods: {
okHandle () {
console.log("点击确定");
this.$emit("on-ok");
}
, cancelHandle () {
console.log("点击取消");
this.$emit("on-cancel");
}
}
}
) new Vue({
el: "#app", data: {
isHide: false }
, methods: {
ok () {
alert("欢迎您购买本产品");
}
, cancel () {
this.isHide = !this.isHide;
}
}
}
) </script></body></html>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
- React为 Vue 引入容器组件和展示组件的教程详解
- Vue表单类的父子组件数据传递示例
- Vue SSR 组件加载问题
- vue中的模态对话框组件实现过程
- 使用Vue的slot插槽分发父组件内容实现高度复用、更加灵活的组件(推荐)
- Vue波纹按钮组件制作
- Vue实现PopupWindow组件详解
- 学习Vue组件实例
- vue弹窗消息组件的使用方法
- 详解vue组件基础