mirror of
https://github.com/lkddi/nexusphp.git
synced 2026-04-03 14:10:57 +08:00
177 lines
3.7 KiB
JavaScript
Vendored
177 lines
3.7 KiB
JavaScript
Vendored
if(!window.JSFX)JSFX=new Object();
|
|
|
|
var LinkFadeInStep=10;
|
|
var LinkFadeOutStep=10;
|
|
var LinkEndColor="FF6600"
|
|
|
|
var LinkStartColor="FFFFFF";
|
|
var LinkFadeRunning=false;
|
|
|
|
document.onmouseover = theOnOver;
|
|
document.onmouseout = theOnOut;
|
|
if(document.captureEvents)
|
|
document.captureEvents(Event.MOUSEOVER | Event.MOUSEOUT);
|
|
function hex2dec(hex){return(parseInt(hex,16));}
|
|
function dec2hex(dec){return (dec < 16 ? "0" : "") + dec.toString(16);}
|
|
function getColor(start, end, percent)
|
|
{
|
|
|
|
var r1=hex2dec(start.slice(0,2));
|
|
var g1=hex2dec(start.slice(2,4));
|
|
var b1=hex2dec(start.slice(4,6));
|
|
|
|
var r2=hex2dec(end.slice(0,2));
|
|
var g2=hex2dec(end.slice(2,4));
|
|
var b2=hex2dec(end.slice(4,6));
|
|
|
|
var pc=percent/100;
|
|
|
|
var r=Math.floor(r1+(pc*(r2-r1)) + .5);
|
|
var g=Math.floor(g1+(pc*(g2-g1)) + .5);
|
|
var b=Math.floor(b1+(pc*(b2-b1)) + .5);
|
|
|
|
return("#" + dec2hex(r) + dec2hex(g) + dec2hex(b));
|
|
}
|
|
JSFX.getCurrentElementColor = function(el)
|
|
{
|
|
var result = LinkStartColor;
|
|
|
|
if (el.currentStyle)
|
|
result = (el.currentStyle.color);
|
|
else if (document.defaultView)
|
|
result = (document.defaultView.getComputedStyle(el,'').getPropertyValue('color'));
|
|
else if(el.style.color)
|
|
result = el.style.color;
|
|
|
|
if(result.charAt(0) == "#")
|
|
result = result.slice(1, 8);
|
|
else if(result.charAt(0) == "r")
|
|
{
|
|
var v1 = result.slice(result.indexOf("(")+1, result.indexOf(")") );
|
|
var v2 = v1.split(",");
|
|
result = (dec2hex(parseInt(v2[0])) + dec2hex(parseInt(v2[1])) + dec2hex(parseInt(v2[2])));
|
|
}
|
|
|
|
return result;
|
|
}
|
|
JSFX.findTagIE = function(el)
|
|
{
|
|
while (el && el.tagName != 'A')
|
|
el = el.parentElement;
|
|
return(el);
|
|
}
|
|
JSFX.findTagNS= function(el)
|
|
{
|
|
while (el && el.nodeName != 'A')
|
|
el = el.parentNode;
|
|
return(el);
|
|
}
|
|
function theOnOver(e)
|
|
{
|
|
var lnk;
|
|
if(window.event)
|
|
lnk=JSFX.findTagIE(event.srcElement);
|
|
else
|
|
lnk=JSFX.findTagNS(e.target);
|
|
|
|
if(lnk)
|
|
JSFX.linkFadeUp(lnk);
|
|
}
|
|
JSFX.linkFadeUp = function(lnk)
|
|
{
|
|
if(lnk.state == null)
|
|
{
|
|
lnk.state = "OFF";
|
|
lnk.index = 0;
|
|
lnk.startColor = JSFX.getCurrentElementColor(lnk);
|
|
lnk.endColor = LinkEndColor;
|
|
}
|
|
|
|
if(lnk.state == "OFF")
|
|
{
|
|
lnk.state = "FADE_UP";
|
|
JSFX.startLinkFader();
|
|
}
|
|
else if( lnk.state == "FADE_UP_DOWN"
|
|
|| lnk.state == "FADE_DOWN")
|
|
{
|
|
lnk.state = "FADE_UP";
|
|
}
|
|
}
|
|
function theOnOut(e)
|
|
{
|
|
var lnk;
|
|
if(window.event)
|
|
lnk=JSFX.findTagIE(event.srcElement);
|
|
else
|
|
lnk=JSFX.findTagNS(e.target);
|
|
|
|
if(lnk)
|
|
JSFX.linkFadeDown(lnk);
|
|
}
|
|
JSFX.linkFadeDown = function(lnk)
|
|
{
|
|
if(lnk.state=="ON")
|
|
{
|
|
lnk.state="FADE_DOWN";
|
|
JSFX.startLinkFader();
|
|
}
|
|
else if(lnk.state == "FADE_UP")
|
|
{
|
|
lnk.state="FADE_UP_DOWN";
|
|
}
|
|
}
|
|
JSFX.startLinkFader = function()
|
|
{
|
|
if(!LinkFadeRunning)
|
|
JSFX.LinkFadeAnimation();
|
|
}
|
|
JSFX.LinkFadeAnimation = function()
|
|
{
|
|
LinkFadeRunning = false;
|
|
for(i=0 ; i<document.links.length ; i++)
|
|
{
|
|
var lnk = document.links[i];
|
|
if(lnk.state)
|
|
{
|
|
if(lnk.state == "FADE_UP")
|
|
{
|
|
lnk.index+=LinkFadeInStep;
|
|
if(lnk.index > 100)
|
|
lnk.index = 100;
|
|
lnk.style.color=getColor(lnk.startColor, lnk.endColor, lnk.index);
|
|
|
|
if(lnk.index == 100)
|
|
lnk.state="ON";
|
|
else
|
|
LinkFadeRunning = true;
|
|
}
|
|
else if(lnk.state == "FADE_UP_DOWN")
|
|
{
|
|
lnk.index+=LinkFadeOutStep;
|
|
if(lnk.index>100)
|
|
lnk.index = 100;
|
|
lnk.style.color=getColor(lnk.startColor, lnk.endColor, lnk.index);
|
|
|
|
if(lnk.index == 100)
|
|
lnk.state="FADE_DOWN";
|
|
LinkFadeRunning = true;
|
|
}
|
|
else if(lnk.state == "FADE_DOWN")
|
|
{
|
|
lnk.index-=LinkFadeOutStep;
|
|
if(lnk.index<0)
|
|
lnk.index = 0;
|
|
lnk.style.color=getColor(lnk.startColor, lnk.endColor, lnk.index);
|
|
|
|
if(lnk.index == 0)
|
|
lnk.state="OFF";
|
|
else
|
|
LinkFadeRunning = true;
|
|
}
|
|
}
|
|
}
|
|
if(LinkFadeRunning)
|
|
setTimeout("JSFX.LinkFadeAnimation()", 40);
|
|
}
|