Partage
  • Partager sur Facebook
  • Partager sur Twitter

effet margin-left en fonction de la souris

fonctionne à moitié

Sujet résolu
    23 mars 2011 à 23:19:27

    Salut,
    peut-être vous pouvez m'aider sur mon effet : quand je bouge la souris, les éléments doivent bouger à vitesse différente : la variable "diff" calcule la différence entre le centre de la page, et la position de la souris, et les éléments de la page bougent grâce au mouseover, et à un margin-left que j'actualise dans le mouseover.
    $(function (){
        $("body").mousemove(function(e){
            var x = e.pageX;
            var y = e.pageY;
    
            var centre = $(window).width()/2;
            var t0 = $("#container").find("li").eq(0);
            var t = $("#container").find("li").eq(1);
            
            if (x<430) x=430;//pour éviter que les éléments sortent de la page :
            else if (x > 1000) x = 1000; //avec ou sans, ça ne change pas le problème
            var diff = x - centre;
            t0.css({"margin-left":-diff});
            t.css({"margin-left":-diff});
            
            $('#reste').html("diff: " + diff);
    



    Mais si l'effet marche bien quand la souris est à gauche de l'écran, il bugge quand la souris passe à droite, les éléments sont collés sur le même margin-left, au lieu de respecter le calcul de diff (x-centre) pour donner des margin-left différents pour l'un et l'autre (puisque c'est la même règle mais à l'inverse).

    (que ce soit diff = 225 ou diff = 300, les 2 éléments ne se séparent plus)
    quand ma souris est à gauche, ça fonctionne, les éléments vont à des vitesses différentes (margin-left de base différents, donc le perso bouge plus vite que le smiley) :
    Image utilisateur

    à zéro, les deux éléments sont sur la même ligne, normal car margin-left égal :
    Image utilisateur

    mais quand ma souris est à droite, ils restent collés les uns aux autres, alors que je voudrais que le perso soit bien plus à gauche que le smiley :
    Image utilisateur

    voilà mon html si besoin :
    <div id="cont">
                <div id="container">
                    <ul>
                        <li><img src="un.png" alt="bg1"/></li>
                        <li><img src="deux.png" alt="bg1"/></li>
                    </ul>
                </div>
            </div>
    


    quelqu'un saurait ce que je peux faire pour que le perso soit en effet derrière le smiley si la souris passe à droite?
    • Partager sur Facebook
    • Partager sur Twitter
      24 mars 2011 à 0:06:58

      j'ai mis margin-left à 500 car le margin:0 auto; ne me centrait pas mon container : c'est tout ce que j'ai mis dans le css pour l'instant

      #cont {margin-left:500px;}
      #container {border:1px solid black;}
      #container ul li {float:left;}
      #container ul { padding:0;}
      
      • Partager sur Facebook
      • Partager sur Twitter
        24 mars 2011 à 1:20:43

        Ton problème, c'est plus du CSS là...

        Un margin-left négatif ne peut pas décaler les images ainsi placées en float left...


        (Pour centrer un élément avec margin auto il faut nécessairement qu'il est un width spécifié)
        • Partager sur Facebook
        • Partager sur Twitter
          24 mars 2011 à 2:46:47

          Chapeau, c'était bien ça :)

          sinon j'essaie de faire l'effet dans les limites de mon conteneur : EDIT: ok c'est bon en fait, j'avais pas vu mon erreur dans le code

          merci à toi !
          • Partager sur Facebook
          • Partager sur Twitter

          effet margin-left en fonction de la souris

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown