1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- /*
- 柯乐义
- http://keleyi.com
- */
- jQuery.getPos = function (e) {
- var l = 0;
- var t = 0;
- var w = jQuery.intval(jQuery.css(e, 'width'));
- var h = jQuery.intval(jQuery.css(e, 'height'));
- var wb = e.offsetWidth;
- var hb = e.offsetHeight;
- while (e.offsetParent) {
- l += e.offsetLeft + (e.currentStyle ? jQuery.intval(e.currentStyle.borderLeftWidth) : 0);
- t += e.offsetTop + (e.currentStyle ? jQuery.intval(e.currentStyle.borderTopWidth) : 0);
- e = e.offsetParent;
- }
- l += e.offsetLeft + (e.currentStyle ? jQuery.intval(e.currentStyle.borderLeftWidth) : 0);
- t += e.offsetTop + (e.currentStyle ? jQuery.intval(e.currentStyle.borderTopWidth) : 0);
- return { x: l, y: t, w: w, h: h, wb: wb, hb: hb };
- };
- jQuery.getClient = function (e) {
- if (e) {
- w = e.clientWidth;
- h = e.clientHeight;
- } else {
- w = (window.innerWidth) ? window.innerWidth : (document.documentElement && document.documentElement.clientWidth) ? document.documentElement.clientWidth : document.body.offsetWidth;
- h = (window.innerHeight) ? window.innerHeight : (document.documentElement && document.documentElement.clientHeight) ? document.documentElement.clientHeight : document.body.offsetHeight;
- }
- return { w: w, h: h };
- };
- jQuery.getScroll = function (e) {
- if (e) {
- t = e.scrollTop;
- l = e.scrollLeft;
- w = e.scrollWidth;
- h = e.scrollHeight;
- } else {
- if (document.documentElement && document.documentElement.scrollTop) {
- t = document.documentElement.scrollTop;
- l = document.documentElement.scrollLeft;
- w = document.documentElement.scrollWidth;
- h = document.documentElement.scrollHeight;
- } else if (document.body) {
- t = document.body.scrollTop;
- l = document.body.scrollLeft;
- w = document.body.scrollWidth;
- h = document.body.scrollHeight;
- }
- }
- return { t: t, l: l, w: w, h: h };
- };
- jQuery.intval = function (v) {
- v = parseInt(v);
- return isNaN(v) ? 0 : v;
- };
- jQuery.fn.HoverTreeScroll = function (s) {
- o = jQuery.speed(s);
- return this.each(function () {
- new jQuery.fx.HoverTreeScroll(this, o);
- });
- };
- jQuery.fx.HoverTreeScroll = function (e, o) {
- var z = this;
- z.o = o;
- z.e = e;
- z.p = jQuery.getPos(e);
- z.s = jQuery.getScroll();
- z.clear = function () { clearInterval(z.timer); z.timer = null };
- z.t = (new Date).getTime();
- z.step = function () {
- var t = (new Date).getTime();
- var p = (t - z.t) / z.o.duration;
- if (t >= z.o.duration + z.t) {
- z.clear();
- setTimeout(function () { z.scroll(z.p.y, z.p.x) }, 13);
- } else {
- st = ((-Math.cos(p * Math.PI) / 2) + 0.5) * (z.p.y - z.s.t) + z.s.t;
- sl = ((-Math.cos(p * Math.PI) / 2) + 0.5) * (z.p.x - z.s.l) + z.s.l;
- z.scroll(st, sl);
- }
- };
- z.scroll = function (t, l) { window.scrollTo(l, t) };
- z.timer = setInterval(function () { z.step(); }, 13);
- };
- /*
- http://hovertree.com
- */
|