tooltip提示控件
这些天忙于公司项目的改版就很少来这里发表文章了,今天趁着周末休息给大家分享一个jQuery提示控件。可用于显示加载提示、错误提示、操作提示等。
先上张预览图:
提示条样式可以自己定义,支持关闭回调和锁屏,自适应居中,采用fixed定位(暂未考虑兼容IE6)。
下面是源码:
1 /** 2 * tooltip提示 3 * @author Newton---承諾ン祗愛 4 * @date 2012年04月19日晚 5 * @update 2012年04月23日重构,保证一个实例的关闭函数只能触发自身的关闭事件,加入动画缓动支持。 6 * @param object{} 7 * @type string tip: '', 提示内容,支持传入html。 8 * @type number time: 3, 自动关闭时间,以秒计时。 9 * @type boolean lock: false, 锁屏。 10 * @type string easing: 'linear' 动画缓动效果,需要缓动插件支持。 11 * @type string maskColor: '#000', 锁屏颜色。 12 * @type number maskOpacity: .3, 锁屏透明度。 13 * @type number fxSpeed: 300, 动画速度,不建议设置过大,以毫秒计时。 14 * @type number index: 999999, z-index值。 15 * @type function afterClose: $.noop 关闭后回调。 16 */ 17 (function ($){ 18 //提示条外层包裹 19 var tooltipWrap = $([ 20 ' 21 <div style="position: fixed; top:-100%; left: 50%; margin: 0; padding: 0;">', 22 ' 23 <div style="position: relative; top:0; right: 50%; margin: 0; padding: 0;"></div> 24 25 ', 26 '</div> 27 28 ' 29 ].join('')).appendTo(document.body); 30 31 //锁屏 32 var lockMask = $(' 33 <div style="position: fixed; top: 0; left: 0; width: 100%; height: 100%; display: none;"></div> 34 35 ').appendTo(document.body); 36 37 //内容包裹 38 var tootipInner = tooltipWrap.children(); 39 40 //计时器id 41 var timer = null; 42 43 //实例堆栈 44 var instanceStack = null; 45 46 //默认参数 47 var defaults = { 48 tip: '', 49 time: 3, 50 fxSpeed: 300, 51 index: 999999, 52 lock: false, 53 easing: 'linear', 54 maskOpacity: .2, 55 maskBackground: '#000', 56 afterClose: $.noop 57 }; 58 59 //接口 60 var tooltip = function (config){ 61 //模仿静态方法,不需要用new初始化 62 if (!(this instanceof tooltip)) { 63 return new tooltip(config); 64 } 65 this.config = $.extend({}, defaults, config); 66 this.config.time = this.config.time * 1000; 67 this._initialize(); 68 return this; 69 }; 70 71 //原型方法 72 tooltip.prototype = { 73 //初始化函数 74 _initialize: function (){ 75 clearTimeout(timer); 76 if (instanceStack !== null && instanceStack !== this) instanceStack.config.afterClose(); 77 instanceStack = this; 78 tooltipWrap.css('z-index', this.config.index); 79 lockMask.css({ 80 zIndex: this.config.index - 1, 81 opacity: this.config.maskOpacity, 82 background: this.config.maskBackground 83 }); 84 this._toggleMask(); 85 tootipInner.html(this.config.tip); 86 this._slideDown(); 87 }, 88 //锁屏 89 _locked: function (){ 90 lockMask.fadeIn(this.config.fxSpeed); 91 }, 92 //关闭锁屏 93 _unlocked: function (){ 94 lockMask.fadeOut(this.config.fxSpeed); 95 }, 96 //显示隐藏锁屏 97 _toggleMask: function (){ 98 if (this.config.lock) { 99 this._locked(); 100 } else { 101 this._unlocked(); 102 } 103 }, 104 //提示条滑下 105 _slideDown: function (){ 106 var t = this; 107 tooltipWrap.stop(true, false).animate({ 108 top: 0 109 }, this.config.fxSpeed, this.config.easing, function (){ 110 t._autoClose(); 111 }); 112 }, 113 //提示条收起 114 _slideUp: function (){ 115 //保证只有当前实例才能执行关闭操作 116 if (instanceStack !== this) return; 117 var t = this; 118 this._unlocked(); 119 tooltipWrap.animate({ 120 top: -tooltipWrap.height() 121 }, this.config.fxSpeed, this.config.easing, function (){ 122 instanceStack = null; 123 t.config.afterClose(); 124 }); 125 }, 126 //自动关闭 127 _autoClose: function (){ 128 var t = this; 129 timer = setTimeout(function (){ 130 clearTimeout(timer); 131 t._slideUp(); 132 }, this.config.time); 133 }, 134 //关闭接口 135 close: function (){ 136 this._slideUp(); 137 } 138 }; 139 140 //公开接口 141 window.tooltip = tooltip; 142 })(jQuery);
调用方法(依赖jQuery,每个参数的意义注释里都有,不多解释了):
1 tooltip({ 2 tip: '消息', 3 lock: true, 4 time: 6, 5 afterClose: function(){ 6 alert('我关闭了!'); 7 } 8 });
更新日志: 2012年04月23日:详细请见注释。 示例下载: tooltip.rar(前端组-Newton)
posted on 2012-04-24 08:53 前端组www.qianduanzu.com 阅读(2792) 评论(6) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库