dialog插件
来源:互联网 发布:淘宝v3会员是几钻 编辑:程序博客网 时间:2024/06/04 18:46
dialog.html
<script type="text/template" id="dialog"> <div class="<%=className%>"> <div class="weui-mask"></div> <div class="weui-dialog"> <% if(title){ %> <div class="weui-dialog__hd"><strong class="weui-dialog__title"><%=title%></strong></div> <% } %> <div class="weui-dialog__bd"><%=content%></div> <div class="weui-dialog__ft"> <% for(var i = 0; i < buttons.length; i++){ %> <a href="javascript:;" class="weui-dialog__btn weui-dialog__btn_<%=buttons[i]['type']%>"><%=buttons[i]['label']%></a> <% } %> </div> </div> </div></script>
dialog.less
@weuiDialogLineColor: #DCDCDC;.setTopLine(@c: #DCDCDC) { content: " "; position: absolute; left: 0; top: 0; right: 0; height: 1px; border-top: 1px solid @c; color: @c; transform-origin: 0 0; transform: scaleY(0.5);}.setTapColor(@c:rgba(0,0,0,0)) { -webkit-tap-highlight-color: @c;}.setLeftLine(@c: #DCDCDC) { content: " "; position: absolute; left: 0; top: 0; width: 1px; bottom: 0; border-left: 1px solid @c; color: @c; transform-origin: 0 0; transform: scaleX(0.5);}.ui-dialog { position: fixed; z-index: 5000; width: 72%; max-width: 300px; top: 50%; left: 50%; transform: translate(-50%, -50%); background-color: #FFFFFF; text-align: center; border-radius: 3px; overflow: hidden;}.ui-dialog__title { font-weight: 400; font-size: 15px; padding-top: 21px; padding-bottom: 21px;}.ui-dialog__bd { padding-top: 21px; padding-bottom: 21px; font-size: 13px; word-wrap: break-word; word-break: break-all; color: black;}.ui-dialog__title~.ui-dialog__bd{ padding-top: 0;}.ui-dialog__ft { position: relative; font-size: 15px; display: flex; &:after { content: " "; .setTopLine(@weuiDialogLineColor); }}.ui-dialog__btn { display: block; padding-top: 15px; padding-bottom: 15px; flex: 1; color: #FF8F3B; text-decoration: none; .setTapColor(); &:active { background-color: #EEEEEE; } position: relative; &:after { content: " "; .setLeftLine(@weuiDialogLineColor); } &:first-child { &:after { display: none; } }}.ui-dialog__btn_default { color: #FF8F3B;}.ui-dialog__btn_primary { color: #FF8F3B;}.ui-mask { position: fixed; z-index: 1000; top: 0; right: 0; left: 0; bottom: 0; background: rgba(0, 0, 0, .6);}.ui-mask_transparent{ position: fixed; z-index: 1000; top: 0; right: 0; left: 0; bottom: 0;}@-webkit-keyframes fadeIn{ from{ opacity:0; } to{ opacity:1; }}@keyframes fadeIn{ from{ opacity:0; } to{ opacity:1; }}.ui-animate-fade-in{ -webkit-animation:fadeIn ease .3s forwards; animation:fadeIn ease .3s forwards;}@-webkit-keyframes fadeOut{ from{ opacity:1; } to{ opacity:0; }}@keyframes fadeOut{ from{ opacity:1; } to{ opacity:0; }}.ui-animate-fade-out{ -webkit-animation:fadeOut ease .3s forwards; animation:fadeOut ease .3s forwards;}@media screen and (min-width: 1024px) { .ui-dialog { width: 35%; }}
dialog.js
/** * dialog,弹窗,alert和confirm的父类 * * @param {object=} options 配置项 * @param {string=} options.title 弹窗的标题 * @param {string=} options.content 弹窗的内容 * @param {string=} options.className 弹窗的自定义类名 * @param {array=} options.buttons 按钮配置项 * * @param {string} [options.buttons[].label=确定] 按钮的文字 * @param {string} [options.buttons[].type=primary] 按钮的类型 [primary, default] * @param {function} [options.buttons[].onClick=$.noop] 按钮的回调 * * @example * Dialog({ * title: 'dialog标题', * content: 'dialog内容', * className: 'custom-classname', * buttons: [{ * label: '取消', * type: 'default', * onClick: function () { alert('取消') } * }, { * label: '确定', * type: 'primary', * onClick: function () { alert('确定') } * }] * }); * * // 主动关闭 * var $dialog = Dialog({...}); * $dialog.hide(function(){ * console.log('`dialog` has been hidden'); * }); */(function(global,factory){ if(typeof define === 'function' && define.amd){ define(function(){ return factory(); }); }else if(typeof module !== 'undefined' && module.exports){ module.exports = factory(); }else{ global.Dialog = factory(global); }}(typeof window !== 'undefined' ? window : this,function(win){ var _sington; var dialog = function(options){ var style = '.ui-dialog{position:fixed;z-index:5000;width:72%;max-width:300px;top:50%;left:50%;transform:translate(-50%,-50%);background-color:#FFFFFF;text-align:center;border-radius:3px;overflow:hidden;}.ui-dialog__title{font-weight:400;font-size:15px;padding-top:21px;padding-bottom:21px;}.ui-dialog__bd{padding-top:21px;padding-bottom:21px;font-size:13px;word-wrap:break-word;word-break:break-all;color:black;}.ui-dialog__title ~ .ui-dialog__bd{padding-top:0;}.ui-dialog__ft{position:relative;font-size:15px;display:flex;}.ui-dialog__ft:after{content:" ";position:absolute;left:0;top:0;right:0;height:1px;border-top:1px solid #DCDCDC;color:#DCDCDC;transform-origin:0 0;transform:scaleY(0.5);}.ui-dialog__btn{display:block;padding-top:15px;padding-bottom:15px;flex:1;color:#FF8F3B;text-decoration:none;-webkit-tap-highlight-color:rgba(0,0,0,0);position:relative;}.ui-dialog__btn:active{background-color:#EEEEEE;}.ui-dialog__btn:after{content:" ";position:absolute;left:0;top:0;width:1px;bottom:0;border-left:1px solid #DCDCDC;color:#DCDCDC;transform-origin:0 0;transform:scaleX(0.5);}.ui-dialog__btn:first-child:after{display:none;}.ui-dialog__btn_default{color:#FF8F3B;}.ui-dialog__btn_primary{color:#FF8F3B;}.ui-mask{position:fixed;z-index:1000;top:0;right:0;left:0;bottom:0;background:rgba(0,0,0,0.6);}.ui-mask_transparent{position:fixed;z-index:1000;top:0;right:0;left:0;bottom:0;}@-webkit-keyframes fadeIn{from{opacity:0;}to{opacity:1;}}@keyframes fadeIn{from{opacity:0;}to{opacity:1;}}.ui-animate-fade-in{-webkit-animation:fadeIn ease .3s forwards;animation:fadeIn ease .3s forwards;}@-webkit-keyframes fadeOut{from{opacity:1;}to{opacity:0;}}@keyframes fadeOut{from{opacity:1;}to{opacity:0;}}.ui-animate-fade-out{-webkit-animation:fadeOut ease .3s forwards;animation:fadeOut ease .3s forwards;}@media screen and (min-width:1024px){.ui-dialog{width:35%;}}'; $('head').append('<style type="text/css">'+style+'</style>'); if(_sington) return _sington; options = $.extend({},{ title: '', content: null, className: '', buttons: [{ label: '确定', type: 'primary', onClick: function(){} }] }, options); var contentHtml = ""; buttonsHtml = ""; if(options.content){ contentHtml = '<div class="ui-dialog__bd">'+options.content+'</div>'; } for(var i = 0; i < options.buttons.length; i++){ buttonsHtml += '<a href="javascript:;" class="ui-dialog__btn ui-dialog__btn_'+options.buttons[i]['type']+'">'+options.buttons[i]['label']+'</a>'; } const dialogWrap = '<div class="'+options.className+'">'+ ' <div class="ui-mask"></div>'+ ' <div class="ui-dialog">'+ ' <div class="ui-dialog__title">'+options.title+'</div>'+ contentHtml+ ' <div class="ui-dialog__ft">'+ buttonsHtml+ ' </div>'+ ' </div>'+ '</div>'; const $dialogWrap = $(dialogWrap); const $dialog = $dialogWrap.find('.ui-dialog'); const $mask = $dialogWrap.find('.ui-mask'); function _hide(callback){ _hide = function(){}; // 防止二次调用导致报错 $mask.addClass('ui-animate-fade-out'); $dialog .addClass('ui-animate-fade-out') .on('animationend webkitAnimationEnd', function () { $dialogWrap.remove(); _sington = false; callback && callback(); }); } function hide(callback){ _hide(callback); } $('body').append($dialogWrap); // 不能直接把.ui-animate-fade-in加到$dialog,会导致mask的z-index有问题 $mask.addClass('ui-animate-fade-in'); $dialog.addClass('ui-animate-fade-in'); $dialogWrap.on('click', '.ui-dialog__btn', function (evt) { const index = getIndex.call($(this)); if (options.buttons[index].onClick) { if (options.buttons[index].onClick.call(this, evt) !== false) hide(); } else { hide(); } }); _sington = $dialogWrap[0]; _sington.hide = hide; return _sington; function getIndex() { const $element = this[0]; const $parent = $element.parentNode; return Array.prototype.indexOf.call($parent.children, $element); } }; return dialog;}));
阅读全文
0 0
- dialog插件
- jquery 经典dialog插件
- jQuery插件--dialog效果
- jQuery--对话框插件--dialog
- cordova toast dialog插件
- 常用插件--bootstrap3-dialog
- cordova dialog插件
- jquery Dialog - 弹出窗插件
- jquery blockUI 扩展插件 Dialog
- jQuery弹出层插件Dialog
- jquery Dialog弹框插件
- jquery 对话框(Dialog)插件
- 封装的EasyUI Dialog插件
- jQuery Dialog弹出层对话框插件演示
- Jquery UI dialog弹出层插件
- jQuery Dialog 弹出层对话框插件
- 一个经典的jquery dialog插件
- jQuery Dialog 弹出层对话框插件
- ISAP模板
- unity破解
- ConerStone3.0.3下载地址
- windows中命令行中常用命令汇总
- Android开发实用工具类之数据校验类
- dialog插件
- java调用cmd命令
- Android app安全性能测试
- Android ANR产生的原因以及其定位分析
- 微信小程序 Node.js (基础七) Stream(流)
- redis面试总结
- linux 的安装与配置
- EJB到底是什么?
- Android app中实现网络监听