Lancement du défilement quand la souris passe sur la zone.
Plus la souris se rapproche des extrémités, plus la vitesse est rapide.
Le sens de défilement change quand le curseur arrive à la moitié de l'image.
Un clic sur la zone désactive / relance le défilement.
Pour l'exemple, pendant les pauses, les images deviennent des liens actifs vers une popup.
<html>
<head>
<title>...</title>
<style type="text/css">
body {margin:0px}
img {display:none;position:absolute}
#c {display:none;margin-top:100px;background-color:#ffcc00;position:relative;overflow:hidden;}
</style>
</head>
<body>
<h1 id="mess" style="text-align:center">
Veuillez patienter...
</h1>
<div id="nul"></div>
<div style="margin-top:50px;margin-left:50px">
<strong>
En passant sur la boîte à images, on décide du sens et de la vitesse de défilement;<br />
En cliquant sur la zone, on stoppe le défilement et on active les liens images;<br/>
On peut alors afficher chaque image dans une fenêtre indépendante (pas d'agrandissement ici,
ce n'est pas le but);<br />
Si on reclique dans la zone, on relance le défilement;
</strong>
</div>
<script type="text/javascript">
var timer,zero,w,lf,el;
var tab=new Array();
var pos=0;
var val=0;
var oui=true;
var M=100;
var W=300;
var H=100;
var delai=Math.round(W/4);
var c=document.createElement('div');
c.id="c";
c.style.marginLeft=M+"px";
c.style.width=W+"px";
c.style.height=H+"px";
var dec=M+W/2;
for(i=0;i!=60;i++){
zero= i<9 ? 0 : "";
tab[i]=new Image();
tab[i].src="http:/ /javatwist.imingo.net/sm"+zero+(i+1)+".gif";
c.appendChild(tab[i]);
}
document.body.replaceChild(c,document.getElementById('nul'));
function go(){
for(i in tab){
lf=parseInt(tab[i].style.left);
w=tab[i].width;
tab[i].style.left=lf+val+"px";
if(lf>pos-w){
tab[i].style.left=lf-pos+"px"};
if(lf<W-pos){
tab[i].style.left=lf+pos+"px"};
}
timer=setTimeout("go()",delai)
}
function speed(e){
el= (!e) ? event.clientX : e.pageX;
if(el>=dec){
delai=W/2+2-(el-dec);val=2}
else{
delai=W/2-1-(dec-el);val=-2};
}
c.onmousemove=speed;
c.onclick=function(){
if(oui){clearTimeout(timer);oui=false;
for(i in tab){
tab[i].style.cursor="pointer"};
}
else{go();oui=true;
for(i in tab){
tab[i].style.cursor="default"};
};
}
for(i in tab){
tab[i].onclick=function(){
if(this.style.cursor=="pointer"){
window.open(this.src)}
};
}
onload=function(){
document.body.removeChild(document.getElementById("mess"));
c.style.display="block";
for(i in tab){
tab[i].style.left=pos+"px";
tab[i].style.top=(H-tab[i].height)/2+"px";
tab[i].style.display="inline";
pos+=tab[i].width;
}
go();
}
</script>
</body>
</html> |
|