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<3setTimeout("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>