Partage
  • Partager sur Facebook
  • Partager sur Twitter

Deplacement de la scrollbar

    6 août 2009 à 19:32:38

    Bonjour,

    J'ai actuellement un souci avec la scrollbar.

    Dans une de mes pages, j'ai un système drag and drop.
    Quand je relâche l'objet en déplacement, il doit revenir à ça position initial.

    Mais je rencontre un problème, si l'objet va trop haut, ou trop bas dans la page, il reste bloqué.
    De la même sorte, si je le dépose sur un autre objet, cela n'est pas détecte (normalement si).

    Pour régler mon souci, j'ai donc pensé a une solution :
    Quand je drag and drop un objet, que le site défile au déplacement du curseur de la souris.
    Il me faudrait donc modifier la scrollbar suivant la position de la souris.

    Quelqu'un connait-il les attributs de la fenétre pour utiliser les scrollbar en javascript ?

    ou connaissez-vous une lib qui permette de déplacer la scrollbar en même temps que le pointeur de la souris ?


    Merci d'avance
    • Partager sur Facebook
    • Partager sur Twitter
      6 août 2009 à 19:35:04

      window.scrollTo() ou window.scrollBy().
      Et tu assossies ça à un onmousemove pour ce que tu veux faire.
      • Partager sur Facebook
      • Partager sur Twitter
        6 août 2009 à 19:46:22

        Merci beaucoup.

        Et sinon, pour la souris, c'est :
        event.clientY

        Mais comment faire un bon rapport avec la scrollbar ?

        Pour le moment je fais position de la souris moins sa position au debut du drag and drop, mais ça marche pas des masses...
        • Partager sur Facebook
        • Partager sur Twitter
          6 août 2009 à 21:28:31

          Dans le code js :

          var deplacement= 0;
          var conteneur = 0;
          var mousey = 0;
          
          <!--
          window.onload = function(top) {
          	var group
          	var coordinates = ToolMan.coordinates()
          	var drag = ToolMan.drag()
          
          	var boxHandle = document.getElementById("boxHandle")
          	group = drag.createSimpleGroup(boxHandle, document.getElementById("handle"))
          	group.verticalOnly()
          }
          function transparence(id)
          {
          	if (id == 1){
          	document.getElementById('test').style.opacity = '0.25';
          	document.getElementById('test').style.filter  = 'alpha(opacity=25)';
          	}else{
          	document.getElementById('test').style.opacity = '1';
          	document.getElementById('test').style.filter  = 'alpha(opacity=100)';
          	}
          }
          



          Au niveau du body :

          onmousemove="if (deplacement != 0){window.scrollBy(0,(event.clientY-mousey));}"
          


          La variable deplacement = 0 si il n'y a aucun déplacement

          Au niveau de mon objet déplaçable :

          <div id="boxHandle" class="box" onmousedown="deplacement=1;mousey=event.clientY;transparence(1);" onmouseup="transparence(0);deplacement=0;document.getElementById('boxHandle').style.top = '0px';">
          <div id="handle" class="handle" >&nbsp;</div>
          <p>drag handle to move</p>
          </div>
          
          • Partager sur Facebook
          • Partager sur Twitter
            6 août 2009 à 21:53:24

            Tu le sors d'où event.clientY-mousey ? (sachant que tu ne peux pas mettre de - dans un nom d'attribut ou de variable d'après ce que je sais...)
            • Partager sur Facebook
            • Partager sur Twitter
              6 août 2009 à 22:31:21

              C'est une opération
              Je récupère la position Y actuelle, et lui enlève celle de départ
              c event.clientY moins la variable mousey.

              Ah oui aussi je ne gére que la hauteur, donc y =)
              • Partager sur Facebook
              • Partager sur Twitter
                8 août 2009 à 9:46:06

                Bah en fait, je croi qu'il faut pas y récupérer sur event mais sur window...
                Et en plus, ça doit être le truc d'IE...
                Pour les autres, ça doit être : document.body.scrollTop
                donc en gros :
                decalage_par_rapport_au_haut = parseInt(document.body.scrollTop || window.clientY);
                
                • Partager sur Facebook
                • Partager sur Twitter

                Deplacement de la scrollbar

                × 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