Partage
  • Partager sur Facebook
  • Partager sur Twitter

Récupérer le positionnement "top" d'un div

en javascript c'est possible ?

Sujet résolu
    2 février 2009 à 22:45:28

    Bonsoir zéros !

    En ce moment je bloque sur un problème avec javascript, je n'arrive pas à récupérer la valeur "top" d'un div.

    En gros j'aimerais récupérer ça :

    #mondiv
    {
    top: 10px;
    }
    

    dans une variable javascript...

    J'ai essayé

    mondivtop = document.getElementById('mondiv').style.top;
    


    mais bon ca n'a pas l'air de vouloir fonctionner :(

    Quelqu'un connait-il la réponse à mon problème ?

    Merci à vous !

    • Partager sur Facebook
    • Partager sur Twitter
      2 février 2009 à 22:52:33

      Voici une fonction qui permet de récupérer la position absolue d'un élément, quelque soit la façon dont il ait été positionné (fichier css, style sur l'élément, ou rien du tout -> position naturelle) :
      //Retourne la position absolue d'un objet
      function findPos(obj){
      	var curleft = curtop = 0;
      	if (obj.offsetParent) {
      		curleft = obj.offsetLeft
      		curtop = obj.offsetTop
      		while (obj = obj.offsetParent) {
      			curleft += obj.offsetLeft
      			curtop += obj.offsetTop
      		}
      	}
      	return [curleft,curtop];
      }
      
      • Partager sur Facebook
      • Partager sur Twitter
        3 février 2009 à 17:24:07

        Merci Elias !

        Donc pour avoir la valeur top de mon div dans une variable javascript j'utilise :

        mondivtop = document.getElementById('mondiv').offsetTop;
        


        Et pour modifier le top de cet élément je fais pareil ? J'utilise aussi offsetTop ?

        document.getElementById('mondiv').offsetTop = mondivtop + 5;
        


        • Partager sur Facebook
        • Partager sur Twitter
          3 février 2009 à 17:46:38

          je sais pas si c est trop recommandé de faire ce que j fais, mais moi je fais:

          var top = document.getElementById("mondiv").style.top ;
          //retourne un int
          


          et pour modifier, ben pareil:

          document.getElementById("mondiv").style.top = 5 + "px" ...
          


          ne pas oublier le px à la fin en string... sinon, marche pas!
          • Partager sur Facebook
          • Partager sur Twitter
            3 février 2009 à 19:04:43

            @fou du twix : offsetTop donne la position par rapport à l'élément parent, d'où l'intérêt, comme cela est fait dans ma fonction, de passer par une boucle qui additionne à chaque fois la position par rapport à l'élément parent, de façon à avoir la position absolue depuis les bords de la fenêtre.
            Par contre, tu ne peux pas positionner un objet ainsi, tu dois passer par du style CSS. En pratique, tu mets ton objet en position: absolute et tu lui donnes un top et un left en px.

            @fredu : ce que tu fais, c'est que tu récupères la valeur de la propriété CSS "top". Cela fonctionne si un élément a été placé ainsi sur la page, mais si par contre ce n'est pas le cas (genre il est placé dans le flux de la page sans être déplacé, ou alors il est placé dans un autre élément et c'est cette autre élément qui est déplacé), ça ne marchera pas. La propriété offsetTop, par contre, fonctionne dans tous les cas.
            • Partager sur Facebook
            • Partager sur Twitter
              4 février 2009 à 21:33:29

              Merci !

              Je vais utiliser offsetTop pour trouver la valeur top de l'élément div et style.top pour la changer. :)

              • Partager sur Facebook
              • Partager sur Twitter
                4 mars 2009 à 12:46:52

                Il y a t'il un moyen de récupérer cette valeur en pourcentage ?
                • Partager sur Facebook
                • Partager sur Twitter

                Récupérer le positionnement "top" d'un div

                × 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