Hplus(H+) 后台主题 UI 框架
This commit is contained in:
@@ -0,0 +1,109 @@
|
||||
(function($){
|
||||
var doc = $(document),
|
||||
win = $(window),
|
||||
mouseDown = 'mousedown.resize',
|
||||
mouseMove = 'mousemove.resize',
|
||||
mouseUp = 'mouseup.resize',
|
||||
clsName = 'CursorResize',
|
||||
resize = function (e) {
|
||||
var o = this,
|
||||
a = o.wrapper.width('auto'),
|
||||
b = o.target,
|
||||
c = 0,
|
||||
d = 0,
|
||||
f = b.offset();
|
||||
if (a)
|
||||
{
|
||||
c = a.width() - b.width();
|
||||
d = a.height() - b.height();
|
||||
f = a.offset();
|
||||
}
|
||||
var m = $.extend({
|
||||
width : win.width() - (f.left - doc.scrollLeft()) - c,
|
||||
height : win.height() - (f.top - doc.scrollTop()) - d
|
||||
}, o.max),
|
||||
w = Math.min(Math.max(e.pageX - o.x + o.w, o.min.width), m.width),
|
||||
h = Math.min(Math.max(e.pageY - o.y + o.h, o.min.height),m.height);
|
||||
b.css({ width : w, height : h });
|
||||
return false;
|
||||
},
|
||||
end = function () {
|
||||
doc.unbind(mouseMove + ' ' + mouseUp);
|
||||
},
|
||||
start = function (e) {
|
||||
var E = this,
|
||||
T = E.target;
|
||||
E.x = e.pageX;
|
||||
E.y = e.pageY;
|
||||
E.w = T.outerWidth() - T.getPadding().w;
|
||||
E.h = T.outerHeight() - T.getPadding().h;
|
||||
if (E.min.width === 0)
|
||||
{
|
||||
var MW = T.data('_mw');
|
||||
if (MW)
|
||||
{
|
||||
E.min.width = MW;
|
||||
}
|
||||
else
|
||||
{
|
||||
E.min.width = T.outerWidth() - T.getPadding().w;
|
||||
T.data('_mw', E.min.width);
|
||||
}
|
||||
}
|
||||
if (this.min.height === 0)
|
||||
{
|
||||
var MH = T.data('_mh');
|
||||
if (MH)
|
||||
{
|
||||
E.min.height = MH;
|
||||
}
|
||||
else
|
||||
{
|
||||
E.min.height = T.outerHeight() - T.getPadding().h;
|
||||
T.data('_mh', E.min.height);
|
||||
}
|
||||
}
|
||||
doc.bind(mouseMove, $.proxy(resize, E)).bind(mouseUp, end);
|
||||
return false;
|
||||
};
|
||||
$.fn.resize = function(o){
|
||||
o = $.extend({ min : { width : 0, height: 0 }}, o);
|
||||
/*
|
||||
options = {
|
||||
handler : null,
|
||||
wrapper : null,
|
||||
min : { width : 0, height: 0},
|
||||
max : { width : 0, height: 0}
|
||||
};
|
||||
*/
|
||||
return this.each(function(){
|
||||
var e = $(this),
|
||||
x = function () {
|
||||
this.target = e;
|
||||
this.handler = o.handler ? (typeof o.handler === 'string' ? $(o.handler, e[0]) : o.handler) : e;
|
||||
this.wrapper = o.wrapper;
|
||||
e.data('_h', this.handler);
|
||||
this.min = o.min;
|
||||
this.max = o.max;
|
||||
if (o.min) $.extend(this.min, o.min);
|
||||
return this;
|
||||
},
|
||||
X = new x();
|
||||
X.handler.addClass(clsName).unbind(mouseDown).bind(mouseDown, $.proxy(start, X));
|
||||
});
|
||||
};
|
||||
$.fn.unResize = function () {
|
||||
return this.each(function(){
|
||||
($(this).data('_h') || $()).removeClass(clsName).unbind(mouseDown);
|
||||
});
|
||||
};
|
||||
$.fn.getPadding = function () {
|
||||
var s = this[0].style,
|
||||
o =
|
||||
{
|
||||
w : parseInt(s.paddingLeft) + parseInt(s.paddingRight) || 0,
|
||||
h : parseInt(s.paddingTop) + parseInt(s.paddingBottom) || 0
|
||||
};
|
||||
return o;
|
||||
};
|
||||
})($);
|
||||
Reference in New Issue
Block a user