Scroll horizontal fluide

anonimwork Messages postés 14 Date d'inscription mardi 9 août 2005 Statut Membre Dernière intervention 7 juin 2006 - 31 mars 2006 à 17:33
anonimwork Messages postés 14 Date d'inscription mardi 9 août 2005 Statut Membre Dernière intervention 7 juin 2006 - 31 mars 2006 à 17:43
Bonjour,

J'ai trouvé un script pour effectuer un scroll horizontal fluide (je n'arrive pas à adapter le script moo.fx à l'horizontale, je suis novice en js) mais le problème est qu'il fonctionne avec des frames.. et je veux bien sur éviter d'en utiliser. Donc je cherche une solution pour le faire fonctionner dans un div si c'est possible.. ou tout autre solution évitant les frames.. ?

Voici les frames et leur id :

<frameset rows="150,416*" frameborder="no" border="0" framespacing="0" cols="*">
<frame name="topFrame" noresize="noresize" src="index11_fichiers/topNavFrame.htm" frameborder="no" scrolling="no">
<frame name="contentFrame" src="index11_fichiers/scrollingFrame.htm" frameborder="no" scrolling="auto">
</frameset>

et le code :

var gridWidth = 1800;
var gridHeight = 1195;

var currentRow = 1;
var currentCol = 1;

var startPosX = 0;
var startPosY = 0;

var endPosX = 0;
var endPosY = 0;

var cautionaryDistance = 240;
scrollSpeed = new Array(1, 2, 4, 6, 8, 10, 14, 16, 20, 24, 28, 32, 36, 40, 44, 48);
var i = 0; //current index of scrollSpeed array
scrollSpeedMinIndex = 1;
scrollSpeedMaxIndex = 5;

function goToGridLoc(row, col) {
var distanceLeft

endPosX = (col - 1) * gridWidth
endPosY = (row - 1) * gridHeight

//update current position
currentRow = row
currentCol = col

//animate to correct x-position
while (startPosX != endPosX) {
if (startPosX < endPosX) {
startPosX += scrollSpeed[i]
if (startPosX > endPosX) {
startPosX = endPosX
}
}
else if (startPosX > endPosX) {
startPosX -= scrollSpeed[i]
if (startPosX < endPosX) {
startPosX = endPosX
}
}
top.contentFrame.scroll(startPosX, startPosY)
distanceLeft = Math.abs(startPosX - endPosX)
if (distanceLeft < cautionaryDistance && i > scrollSpeedMinIndex) {
i--
}
else if (i < scrollSpeedMaxIndex) {
i++
}
} //end while

i = 0
//animate to correct y-position
while (startPosY != endPosY) {
if (startPosY < endPosY) {
startPosY += scrollSpeed[i]
if (startPosY > endPosY) {
startPosY = endPosY
}
}
else if (startPosY > endPosY) {
startPosY -= scrollSpeed[i]
if (startPosY < endPosY) {
startPosY = endPosY
}
}
top.contentFrame.scroll(startPosX, startPosY)
distanceLeft = Math.abs(startPosY - endPosY)
if (distanceLeft < cautionaryDistance && i > scrollSpeedMinIndex) {
i--
}
else if (i < scrollSpeedMaxIndex) {
i++
}
} //end while
startPosX = endPosX;
startPosY = endPosY;
i = 0
} //end function goToGridLoc

Voila ca fait un moment que je retourne le pb dans tous les sens mais je crois que mes compétences s'arretent là..

Je remercie d'avance ceux qui voudront bien se pencher sur le problème.. (même pour me dire que c'est impossible à adapter ou si quelqu'un connait un autre script?..)
DL

1 réponse

anonimwork Messages postés 14 Date d'inscription mardi 9 août 2005 Statut Membre Dernière intervention 7 juin 2006
31 mars 2006 à 17:43
[EDIT] voici ce à quoi j'aimerai arriver mais sans les frames : http://www.anonimwork.com/scroll_test/
0
Rejoignez-nous