根据项目,我结合vue与妹子UI写了个弹窗模态框的demo,不是插件,但是可以从里面抠代码用
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/html"> <head> <meta charset="utf-8"> <title>模拟弹窗</title> <meta name="description" content=""> <meta name="keywords" content=""> <meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" /> <meta name="renderer" content="webkit"> <meta http-equiv="Cache-Control" content="no-siteapp" /> <link rel="stylesheet" href="http://cdn.amazeui.org/amazeui/2.7.1/css/amazeui.min.css"> </head> <body id="modal" v-cloak> <!--alert模态框dom开始--> <div class="am-modal am-modal-alert zl-checkselect-confirm" tabindex="-1" id="my-alert"> <div class="am-modal-dialog zl-pay-border"> <div class="am-modal-bd"> <span class="am-text-xxl">{{{modalOption.alertStr}}}</span> <div> <button type="button" class=" am-modal-btn am-btn-danger zl-confirm-btn" style="width: 70%;border-radius: 6px;background-color: #C50A1D;margin-bottom: 18px;border: none;font-size: 28px;color: #fff;height: 5rem;" data-am-modal-confirm> <a id="alertJumpHref" style="width:100%;display:inline-block;color:#fff;">{{modalOption.alertBtnText}}</a> </button> </div> </div> </div> </div> <!--alert模态框dom结束--> <!--confirm模态框dom开始--> <div class="am-modal am-modal-confirm" tabindex="-1" id="my-confirm"> <div class="am-modal-dialog"> <div class="am-modal-bd"> <span class="am-text-xxl">{{{modalOption.alertStr}}}</span> </div> <div class="am-modal-footer"> <span class="zl-modal-btn" data-am-modal-confirm><a id="confirmJumpHref" class="am-text-xxl" style="width: 50%;display: inline-block;">{{modalOption.confirmBtnText}}</a></span> <span class="zl-modal-btn" data-am-modal-cancel><a id="cancelJumpHref" class="am-text-xxl" style="width: 50%;display: inline-block;">{{modalOption.cancelBtnText}}</a></span> </div> </div> </div> <!--confirm模态框dom结束--> <!--demo按钮开始--> <button type="button" class="am-btn am-btn-default" v-on:click="show('alert')">打开alert</button> <button type="button" class="am-btn am-btn-primary" v-on:click="show('confirm')">打开confirm</button> <button type="button" class="am-btn am-btn-secondary" v-on:click="show('html')">模态内容包含html</button> <!--demo按钮结束--> <script language="javascript" src="http://apps.bdimg.com/libs/jquery/1.11.3/jquery.js"></script> <script type="text/javascript" src="http://cn.vuejs.org/js/vue.js"></script> <script src="http://cdn.amazeui.org/amazeui/2.7.1/js/amazeui.min.js"></script> <script> /*使用方式: 首先在body里引入对应的模态框html,具体请参考妹子UI,模态框样式可自定义 其次在vue的data配置里引入modalOption对象,用于保存模态框生成时的数据(如果只使用aler模态框,则confirm相关数据可省略) 然后需要在methods里引入showAlertModal或showConfirmModal方法 最后调用即可 */ var modal = new Vue({ el: '#modal', data: { modalOption: { alertStr: '', confirmBtnText: '', cancelBtnText: '', alertBtnText: '' } }, methods: { showAlertModal: function(alertId, alertStr, alertBtnText, callBack) { /* 参数说明: *alertId:模态框ID *alertStr:弹窗内容,壳包含html代码 *alertBtnText:弹窗按钮内容 *callBack:点击按钮时执行的方法 */ if (!alertBtnText) { alertBtnText = '确定'; } this.modalOption.alertStr = alertStr; this.modalOption.alertBtnText = alertBtnText; $('#' + alertId).modal({ onConfirm: callBack }); }, showConfirmModal: function(alertId, alertStr, confirmBtnText, cancelBtnText, confirmCallback, cancelCallback) { /* 参数说明: *alertId:模态框ID *alertStr:弹窗内容,壳包含html代码 *confirmBtnText:按钮文字1 *cancelBtnText:按钮文字2 *confirmCallback:点击按钮1时执行的方法 *cancelCallback:点击按钮2时执行的方法 */ if (!confirmBtnText) { confirmBtnText = '确定'; } if (!cancelBtnText) { cancelBtnText = '取消'; } this.modalOption.confirmBtnText = confirmBtnText; this.modalOption.cancelBtnText = cancelBtnText; this.modalOption.alertStr = alertStr; $('#' + alertId).modal({ onConfirm: confirmCallback, onCancel: cancelCallback }); }, /*测试demo所需js,与模态框本身无关*/ show: function(type) { var base = this; if (type === 'alert') { base.showAlertModal('my-alert', '这是一个自定义alert模态框', '关闭', function() { $('#my-alert').modal('close'); }); } else if (type === 'confirm') { base.showConfirmModal('my-confirm', '这是confirm模态框,点是打开带html的模态框,点否关闭', '是', '否', function() { $('#my-confirm').modal('close'); base.showAlertModal('my-alert', '<div class="title">发布提示</div><div class="content"><div>1.没有优惠券发布,商家信息将不显示在商家列表中。</div><div>2.优惠券一旦被顾客领取,将无法修改券面信息,只能修改数量或者取消发布(下架)。</div><div>3.下架操作不会影响客户已经领取到的优惠券在本核销系统生效使用。</div></div>', '关闭', function() { $('#my-alert').modal('close'); }); }, function() { $('#my-confirm').modal('close'); }); } else if (type === 'html') { base.showAlertModal('my-alert', '<div class="title">发布提示</div><div class="content"><div>1.没有优惠券发布,商家信息将不显示在商家列表中。</div><div>2.优惠券一旦被顾客领取,将无法修改券面信息,只能修改数量或者取消发布(下架)。</div><div>3.下架操作不会影响客户已经领取到的优惠券在本核销系统生效使用。</div></div>', '关闭', function() { $('#my-alert').modal('close'); }); } } } }); </script> </body> </html>
未经允许不得转载:前端撸码笔记 » 一个结合vue与妹子UI写的弹窗模态框的demo