ce ne sono molte, ma questa permette:
- di passare DA un colore AD un altro a proprio piacere
- di indicare i colori in formato #FFFFFF e non rgb(255,255,255)
Codice PHP:
function fade(idd,start,end,pausa){
var finiti,Sr,Sg,Sb,Er,Eg,Eb;
finiti=Sr=Sg=Sb=Er=Eg=Eb=0;
// controlla esistenza ID
if(document.getElementById(idd)==null) { alert('L\\'elemento '+idd+' indicato per il fade di colore non è stato trovato'); return false; }
// cambia colore
document.getElementById(idd).style.color=start;
// HEX->DEC
Sr=parseInt(start.substr(1,2),16);
Sg=parseInt(start.substr(3,2),16);
Sb=parseInt(start.substr(5,2),16);
Er=parseInt(end.substr(1,2),16);
Eg=parseInt(end.substr(3,2),16);
Eb=parseInt(end.substr(5,2),16);
// modifica valori per il prossimo ciclo
if(Sr==Er){ finiti++; }else{ Dr=Sr-Er; if(Dr>10) Dr=10; if(Dr<-10) Dr=-10; Sr-=Dr; }
if(Sg==Eg){ finiti++; }else{ Dg=Sg-Eg; if(Dg>10) Dg=10; if(Dg<-10) Dg=-10; Sg-=Dg; }
if(Sb==Eb){ finiti++; }else{ Db=Sb-Eb; if(Db>10) Db=10; if(Db<-10) Db=-10; Sb-=Db; }
// DEC->HEX
Sr=Sr.toString(16); if(Sr.length==1) Sr='0'+Sr;
Sg=Sg.toString(16); if(Sg.length==1) Sg='0'+Sg;
Sb=Sb.toString(16); if(Sb.length==1) Sb='0'+Sb;
Er=Er.toString(16); if(Er.length==1) Er='0'+Er;
Eg=Eg.toString(16); if(Eg.length==1) Eg='0'+Eg;
Eb=Eb.toString(16); if(Eb.length==1) Eb='0'+Eb;
start='#'+Sr+Sg+Sb;
end= '#'+Er+Eg+Eb;
// riavvia se non è finito
if(finiti<3) setTimeout("SrCmndTstoEfftFade('"+idd+"', '"+start+"', '"+end+"', '"+pausa+"')", pausa);
}
consigli?
meglio inventare un for ed un array per evitare tutte quelle ripetizioni?
esempio di utilizzo:
Codice PHP:
<div id="pippo">ciao</div>
<script type="text/javascript">fade('pippo','#121212','#ffffff',20)</script>