<HTML><HEAD>
<SCRIPT LANGUAGE="JavaScript">
<!-- ;
function init() // On initialise
{
startr=255; // Départ couleur rouge
startv=255; // Départ couleur vert
startb=255; // Départ couleur bleue
endr=200; // Fin couleur rouge
endv=128; // Fin couleur vert
endb=255; // Fin couleur bleue
crtr=startr; // Couleur rouge courante
crtv=startv; // Couleur vert courante
crtb=startb; // Couleur bleue courante
steps=90; // Nombre de changement à effectuer
stop=false; // Pas d'arrêt pour le moment
deltar=(startr-endr)/steps; // Incrément de rouge par changement
deltav=(startv-endv)/steps; // Incrément de vert par changement
deltab=(startb-endb)/steps; // Incrément de bleu par changement
hexa="0123456789ABCDEF"; // Chaine de conversion décimal/hexa
document.bgColor=rvb(crtr,crtv,crtb); // Couleur de départ au document
var x=window.setTimeout('fadein()',500); // Lance le délai pour changement
}
function rvb() // Routine de conversion (oubliez !)
{
return "#"+dh(Math.floor(crtr))+dh(Math.floor(crtv))+dh(Math.floor(crtb));
}
function dh(x) // Sous-routine (oubliez aussi pour le moment)
{
y=Math.floor(x/16);
z=Math.floor(x%16);
return(hexa.charAt(y)+hexa.charAt(z));
}
function fadein() // Routine de changement max-min
{
crtr=crtr-deltar; if (crtr<0){crtr=0;} // Rouge-incrément
crtv=crtv-deltav; if (crtv<0){crtv=0;} // Vert-incrément
crtb=crtb-deltab; if (crtb<0){crtb=0;} // Bleu-incrément
// Si la valeur d'une des trois couleurs est plus petite
// que le minimum, on est arrivé
if ((crtr<=endr)||(crtv<=endv)||(crtb<=endb))
{
// Si l'arrêt n'est pas demandé on vas dans l'autre sens
// avec la routine fadeout
if (stop==false){var x=window.setTimeout('fadeout()',500);}
}
else // Sinon, si l'on a pas atteint et dépassé le minimum
{
document.bgColor=rvb(crtr,crtv,crtb); // Nouvelle couleur
// Et on continue dans la même veine...
if (stop==false){var x=window.setTimeout('fadein()',500);}
}
}
function fadeout() // Routine de changement min-max
{
crtr=crtr+deltar; if (crtr>255){crtr=255;} // Rouge+incrément
crtv=crtv+deltav; if (crtr>255){crtr=255;} // Vert+incrément
crtb=crtb+deltab; if (crtr>255){crtr=255;} // Bleu+incrément
// Si on dépasse la valeur de départ des couleurs
if ((crtr>=startr)||(crtv>=startv)||(crtb>=startb))
{
x=Math.random(); // Valeur aléatoire
endr=Math.floor((128*x)+127); // entre 127 et 255
x=Math.random(); // pour le nouveau minimum
endv=Math.floor((128*x)+127); // de rouge vert et bleu
x=Math.random(); // (le maximum ne change pas)
endb=Math.floor((128*x)+127);
deltar=(startr-endr)/steps; // recalcule l'incrément
deltav=(startv-endv)/steps; // de rouge, vert et bleu
deltab=(startb-endb)/steps;
// Si l'arrêt n'est pas demandé on vas dans l'autre sens
// avec la routine fadein
if (stop==false){var x=window.setTimeout('fadein()',500);}
}
else // Sinon, si l'on a pas atteint et dépassé le maximum
{
document.bgColor=rvb(crtr,crtv,crtb); // Nouvelle couleur
// Et on continue dans la même veine...
if (stop==false){var x=window.setTimeout('fadeout()',500);}
}
}
function marre(){stop=true;} // Pour arrêt au prochain délai
// -->
</script>
<TITLE>Couleurs changeantes</TITLE>
</HEAD>
<BODY onLoad="init()">
<FORM><INPUT TYPE="BUTTON" VALUE="Arrêt du massacre !" onClick="marre();"></FORM>
Ou pour les puristes:
<SCRIPT LANGUAGE="JAVASCRIPT">
document.write("<FORM><INPUT TYPE=\"BUTTON\" VALUE=\"Arrêt du massacre !\" onClick=\"marre();\"></FORM>");
</SCRIPT>
Ce gadget ne fonctionnant que sous Javascript, pas besoin d'afficher un bouton d'arrêt pour ceux qui de toute façon ne voient rien se passer...
</BODY>
</HTML>
Pas de lien ici (utilisez le bouton de retour de votre navigateur).
Dernière mise à jour de cette page: 04/09/2001, visiteurs: depuis le 6 avril 2002