Posez votre question Signaler

Javascript

Fetide68 520Messages postés 4 janvier 2009Date d'inscription 10 janvier 2012Dernière intervention - Dernière réponse le 13 juil. 2009 à 17:04
Bonjour, j'ai adapté un javscript qui permet de faire une sorte de "règle coulissante" sur laquelle se déplace un objet (une div, une image,...) en fonction des déplacements de la souris. L'objectif est de placer un menu avec des onglets juste en dessous et que lorsque l'on rentre dans la zone des onglets, le pointeur se déplace.
Actuellement, le pointeur dépasse la zone (border-top rouge dans mon exemple) et le scripte s'exécute en permanence et non pas seulement quand je rentre dans la zone des onglets (qui n'est pas encore créée - j'ai mis un div vide à la place).
Testez plutôt ce scripte, vous verrz mieux ou je veux en venir... (Si possible, mettez des commentaires dans vos suggestions. Je fais ça pour m'entraîner et non pour des fins commerciaux) :
<script language="JavaScript">
<!--
//PLF-http://www.jejavascript.net/
var x = 0;
var dist=-0
var vit=5
var total=0
var mess
var posX = 0;
var posY = 0;
var animate = true;
var imag1 = "illus/fleche.gif";
if (document.getElementById)
{
if(navigator.appName.substring(0,3) == "Net")
document.captureEvents(Event.MOUSEMOVE);
document.onmousemove = Pos_Souris;
window.onload = depl_img;
}
function Pos_Souris(p)
{
x = (navigator.appName.substring(0,3) == "Net") ? p.pageX : event.x+document.body.scrollLeft;
}
function depl_img()
{
if (document.getElementById && animate)
{
document.getElementById("idjoe").style.left = posX+dist;
vitess = setTimeout("depl_img()",10)
posX = posX+((x-(posX+200))/vit);
if(posX+dist!=0)
{
imag2='illus/fleche.gif';
dist=distg
}
else
{
imag2='illus/fleche2.gif';
dist=distd
}
if(imag2!=imag1)
{
document.joe.src=imag2;
imag1=imag2;
}
}
}
if(document.getElementById)
{
document.write('<body style="margin-left: 20%; margin-right: 20%; margin-top: 0px;">');
document.write('<div style="width: 100%; border-top: red solid 2px;">');
document.write('<div id="grande" style="position: relative;">');
document.write('<div id="idjoe" style="position: relative; width:10px; height: 10px; background: red;"></div>');
// document.write('<img src="illus/fleche.gif" name="joe" border="0" hspace="0" vspace="0" >');
document.write('</div>');
document.write('</body>');
}
//-->
</script>
Lire la suite 

Javascript »

Suggestions
11 réponses
Réponse
+0
moins plus
help
Ajouter un commentaire
Réponse
+0
moins plus
il faudrait que tu utilises l'evenement onmouseover ciblé sur le div des onglets.

sinon pour moi sous firefox mac rien ne bouge, même en créant les fichiers de flèches et en les plaçant dans un dossier "illus"

ce que je ne comprends pas c'est tes dist=distg et dist=distd... tes variables distg et distd ne sont pas déclarées!!!
Ajouter un commentaire
Réponse
+0
moins plus
Chez moi tout marche, sous FireFox, Safari et j'ai même pu tester sous IE.

J'ai supprimé toutes les variables dont je pouvais me passer.

Voilà le code d'origine. Je voudrais juste que ça bouge dans un sens et que ça ne dépasse pas une certaine limite (un cadre div dont les tailles sont définies) :

http://www.jejavascript.net/imagsouris1.php
Ajouter un commentaire
Réponse
+0
moins plus
Voilà un bel exemble, sauf que l'évènement ici est au click : https://www.gandi.net/hosting/buy/static (comment ont-ils fait ?) -> On ne peut visualiser le code source (https).
Ajouter un commentaire
Réponse
+0
moins plus
Pas d'idée ?
Ajouter un commentaire
Réponse
+0
moins plus
ils ont probablement fait ça avec jQuery, mais c'est plus sympa d'avoir un script comme celui que tu as trouvé.

donc si tu respectes mieux le script que tu as trouvé, et que tu encapsules le tout dans une fonction que tu appelles via l'évenement onmouseover tu devrais y arriver.

exemple

function bougercurseur () {
ton script
}

et entre body et /body

<div id="containeronglets" onmouseover="return bougercurseur();"></div>

je suis pas sur que ça marche sinon il faut déclarer l'event onmouseover dans le javascript.
Ajouter un commentaire
Réponse
+0
moins plus
J'ai tout essayé, ça marche pas :

J'ai tout essayé, ça marche pas :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<script>

var x = 0;
var y = 0;
var dist=-0
var vit=10
var posX = 0;
var posY = 0;
var animate = true;
var imag1 = "illus/fleche.gif";


//function bouger()
//{
if (document.getElementById)
{
if(navigator.appName.substring(0,3) == "Net")
document.captureEvents(Event.MOUSEMOVE);
document.onmousemove = Pos_Souris;
window.onload = depl_img;
}
//}

function Pos_Souris(p)
{
x = (navigator.appName.substring(0,3) == "Net") ? p.pageX : event.x+document.body.scrollLeft;
y = (navigator.appName.substring(0,3) == "Net") ? p.pageY : event.y+document.body.scrollTop;
}

function depl_img()
{
if (document.getElementById && animate)
{
document.getElementById("idjoe").style.top = 0;
document.getElementById("idjoe").style.left = posX+dist;
vitess = setTimeout("depl_img()",10)
posX = posX+(((x-posX)+10)/vit);
posY = posY+(((y-posY)+10)/vit);
}
}


</script>

<body style="width: 1024px; margin: auto; margin-top: 0px;">
<div style="position: relative; width: 1024px; height: 100px; background: blue;" onmouseover="bouger();">
<div id="idjoe" style="position: relative; width: 50px; height: 50px; color: blue;"><div id="joe" style="width: 20px; height: 20px; background-color: red;"></div></div>
</div>
</body>
Ajouter un commentaire
Réponse
+0
moins plus
essaye déjà d'écrire le div direct dans le html sans passer par javascript, et de lui donner un id

<div id="containercurseur" style="position: relative; width: 1024px; height: 100px; background: blue;">

ensuite tu rajoutes dans le javascript:

if (document.ready) {
var containercurseur = document.getElementById('containercurseur');
containercurseur.onmouseover = bouger();
}

function bouger() {
le code que tu as trouvé ici
}

je suis pas sûr de moi du tout là, j'y connais peu en javascript.
Ajouter un commentaire
Réponse
+0
moins plus
Ca ne fonctionne toujours pas. Voilà le script :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<script>

if (document.ready) {
var containercurseur = document.getElementById('containercurseur');
containercurseur.onmouseover = bouger();
}


function bouger()
{
var x = 0;
var y = 0;
var dist=-0
var vit=10
var posX = 0;
var posY = 0;
var animate = true;
var imag1 = "illus/fleche.gif";

if (document.getElementById)
{
if(navigator.appName.substring(0,3) == "Net")
document.captureEvents(Event.MOUSEMOVE);
document.onmousemove = Pos_Souris;
window.onload = depl_img;
}

function Pos_Souris(p)
{
x = (navigator.appName.substring(0,3) == "Net") ? p.pageX : event.x+document.body.scrollLeft;
y = (navigator.appName.substring(0,3) == "Net") ? p.pageY : event.y+document.body.scrollTop;
}

function depl_img()
{
if (document.getElementById && animate)
{
document.getElementById("idjoe").style.top = 0;
document.getElementById("idjoe").style.left = posX+dist;
vitess = setTimeout("depl_img()",10)
posX = posX+(((x-posX)+10)/vit);
posY = posY+(((y-posY)+10)/vit);
}
}
}

</script>

<body style="width: 1024px; margin: auto; margin-top: 0px;">
<div id="containercurseur" style="position: relative; width: 1024px; height: 100px; background: blue;">
<div style="position: relative; width: 1024px; height: 100px; background: blue;" onmouseover="bouger();">
<div id="idjoe" style="position: relative; width: 50px; height: 50px; color: blue;">
<div id="joe" style="width: 20px; height: 20px; background-color: red;"></div>
</div>
</div>
</div>

</div>
</body>
Ajouter un commentaire
Réponse
+0
moins plus
Voilà une solution, pas simple à mon goût vu que j'ai rien compris et que la moitié voire plus est inutile... Si quelqu'un a des suggestions pour améliorer le code (pour avoir le même résultat). J'attends donc une proposition avant de mettre le post en résolu...
Ajouter un commentaire
Réponse
+0
moins plus
Bon j'arrive pas à rajouter le code : c'est trop long.

Je vous mettrait le lien ce soir...
Ajouter un commentaire
Ce document intitulé « Javascript » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
5 extensions si vous voulez revenir à l'ancien Facebook