IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

[DOM] Positionner la scrollbar d'un div en fonction d'un element


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 24
    Par défaut [DOM] Positionner la scrollbar d'un div en fonction d'un element
    Bonjour,

    Je chercher à positionner la scrollbar d'un div pour qu'un element de celui-ci soit visible (centré serait le mieux).

    Code du div :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    <div style="height:200px; overflow:auto" id="grandDiv">
     
    <div id="truc10">
         <div id="sousTruc11">
         </div>
         <div id="sousTruc12">
         </div>
    </div>
     
    <div id="truc20">
         <div id="sousTruc21">
         </div>
         <div id="sousTruc22">
         </div>
    </div>
     
    <div id="truc30">
    </div>
     
    <div id="truc40">
    </div>
     
    </div>
    Par exemple, ici, disons que le div "sousTruc22" n'est pas visible directement, il faut utiliser la scrollbar pour y accèder.
    Le script que je cherche à faire serait d'utiliser la propriété scrollTop du div "grandDiv" de façon à ce que "sousTruc22" soit visible.

    Je suis arrivé à faire quelque chose qui fonctionne des fois, mais cela ne marche que sous IE...
    Ce code positionne la scrollbar de façon à ce que l'élément soit sur la première ligne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    var obj = document.getElementById("sousTruc22");
    var monOffsetTop = obj.offsetTop;
     
    while (obj.parentNode.id != "grandDiv") {
          obj = obj.parentNode;	
          monOffsetTop = monOffsetTop + obj.offsetTop;
    }
     
    var objGrandDiv = document.getElementById("grandDiv");
    objGrandDiv.scrollTop = monOffsetTop;
    Firefox renvoi le offsetTop relativement au document, si j'ai bien compris, alors que IE par rapport au noeud père...

    De plus des fois (par exemple au premier lancement de ce script), IE ne renvoi pas une valeur correcte, par contre ca marche à la deuxième execution...
    Je n'ai pas compris pourquoi...

    Pensez-vous que ceci peut être réalisable facilement

    Pouvez vous m'aider à résoudre ce problème ?

    Merci

    Fabs

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    818
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2005
    Messages : 818
    Par défaut
    Pourquoi ne pas utiliser des ancres plutot que de positionner a l'aide du scrollTop?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 24
    Par défaut
    Ok, ben deux heures dans le vent...

    Cela fonctionne parfaitement bien avec les ancres :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    window.location = "#sousTruc22"
    Merci! :-)

  4. #4
    Membre éclairé Avatar de danyboy85
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2005
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2005
    Messages : 548
    Par défaut
    Sinon tu avais la possibilité de te tourner vers scrollIntoView() mais je ne sais pas si c'est spécifique IE ou non.

    PS : N'oublie pas le tag [Résolu] !

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 24
    Par défaut
    oui, scrollIntoView marche parfaitement bien, et semble etre standard DOM :

    http://developer.mozilla.org/fr/docs...scrollIntoView

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 26/02/2009, 12h06
  2. Se positionner en bas d'un div avec un scrollbar
    Par mdr_cedrick dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 16/03/2008, 21h11
  3. [css] scrollbar dans un div
    Par tooms2028 dans le forum Mise en page CSS
    Réponses: 9
    Dernier message: 17/06/2007, 09h18
  4. Positionner le scroll d'un div toujours en bas.
    Par barok dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 24/08/2005, 12h17
  5. Position de la scrollbar dans un div
    Par VolVic dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 03/01/2005, 15h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo