tooltipプロンプトコントロール
13214 ワード
ここ数日、会社のプロジェクトの改版で忙しくて、ここに文章を発表することはめったにありません.今日は週末の休みを利用して、jQueryのヒントコントロールを共有します.ロード・プロンプト、エラー・プロンプト、アクション・プロンプトなどを表示できます.
プレビューを先に表示:
プロンプトバースタイルは自分で定義することができ、コールバックとロックスクリーンを閉じることをサポートし、適応的に中央に位置し、fixed位置決めを採用する(互換性IE 6は考慮されていない).
以下はソースコードです:(注:このJSを導入する際にbody内に置いてください.そうしないと効果がありません.原因は不明です.)
呼び出し方法(jQueryに依存し、各パラメータの意味注記にあり、あまり説明されていません):
プレビューを先に表示:
プロンプトバースタイルは自分で定義することができ、コールバックとロックスクリーンを閉じることをサポートし、適応的に中央に位置し、fixed位置決めを採用する(互換性IE 6は考慮されていない).
以下はソースコードです:(注:このJSを導入する際にbody内に置いてください.そうしないと効果がありません.原因は不明です.)
/**
* tooltip
* @author Newton--- ン
* @date 2012 04 19
* @update 2012 04 23 , , 。
* @param object{}
* @type string tip: '', , html。
* @type number time: 3, , 。
* @type boolean lock: false, 。
* @type string easing: 'linear' , 。
* @type string maskColor: '#000', 。
* @type number maskOpacity: .3, 。
* @type number fxSpeed: 300, , , 。
* @type number index: 999999, z-index 。
* @type function afterClose: $.noop 。
*/
(function ($){
//
var fistInit = true;
//
var tooltipWrap = $([
'<div style="position: fixed; top:-100%; left: 50%; margin: 0; padding: 0; pointer-events: none; background: transparent;">',
' <div style="position: relative; top:0; right: 50%; margin: 0; padding: 0; pointer-events: visiblePainted;"></div>',
'</div>'
].join('')).appendTo(document.body);
//
var lockMask = $('<div style="position: fixed; top: 0; left: 0; width: 100%; height: 100%; display: none;"></div>').appendTo(document.body);
//
var tootipInner = tooltipWrap.children();
// id
var timer = null;
//
var instanceStack = null;
//
var defaults = {
tip: '',
time: 3,
fxSpeed: 300,
index: 999999,
lock: false,
easing: 'linear',
maskOpacity: .2,
maskBackground: '#000',
afterClose: $.noop
};
//
var tooltip = function (config){
// , new
if (!(this instanceof tooltip)) {
return new tooltip(config);
}
this.config = $.extend({}, defaults, config);
this.config.time = this.config.time * 1000;
this._initialize();
return this;
};
//
tooltip.prototype = {
//
_initialize: function (){
clearTimeout(timer);
if (instanceStack !== null && instanceStack !== this) instanceStack.config.afterClose();
instanceStack = this;
tooltipWrap.css('z-index', this.config.index);
lockMask.css({
zIndex: this.config.index - 1,
opacity: this.config.maskOpacity,
background: this.config.maskBackground
});
this._toggleMask();
tootipInner.html(this.config.tip);
//
if (fistInit) {
tooltipWrap.css('top', -tooltipWrap.height());
fistInit = false;
}
this._slideDown();
},
//
_locked: function (){
lockMask.fadeIn(this.config.fxSpeed);
},
//
_unlocked: function (){
lockMask.fadeOut(this.config.fxSpeed);
},
//
_toggleMask: function (){
if (this.config.lock) {
this._locked();
} else {
this._unlocked();
}
},
//
_slideDown: function (){
var t = this;
tooltipWrap.stop(true, false).animate({
top: 0
}, this.config.fxSpeed, this.config.easing, function (){
t._autoClose();
});
},
//
_slideUp: function (){
//
if (instanceStack !== this) return;
var t = this;
this._unlocked();
tooltipWrap.animate({
top: -tooltipWrap.height()
}, this.config.fxSpeed, this.config.easing, function (){
instanceStack = null;
t.config.afterClose();
});
},
//
_autoClose: function (){
var t = this;
timer = setTimeout(function (){
t._slideUp();
}, this.config.time);
},
//
close: function (){
this._slideUp();
}
};
//
window.tooltip = tooltip;
})(jQuery);
呼び出し方法(jQueryに依存し、各パラメータの意味注記にあり、あまり説明されていません):
tooltip({
tip: ' ',
lock: true,
time: 6,
afterClose: function(){
alert(' !');
}
});