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 :

Javascript Scrollbar Synchronisation Div


Sujet :

JavaScript

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10
    Points : 8
    Points
    8
    Par défaut Javascript Scrollbar Synchronisation Div
    Bonjour

    J'ai deux boites div de tailles différentes qui sont côte à côte.

    Ces deux boites div on des contenus différents et de taille différentes.

    Exemple : le div de gauche (divfilms) contient une liste de films(divfilm). Chaque div film contient une liste d'acteurs(divacteur). le div de droite (divrepliques) contient une liste de répliques(divreplique), soit les répliques de tout le film, soit les répliques d'un seul des acteurs.

    Est-il possible de trouver la position d'un élément contenu dans une des deux boites div afin de synchroniser au niveau du défilement la position des div.

    En gros, peut on faire en sorte que quand on est dans un film et qu'on déroule la liste des acteurs, on ait la liste des répliques qui reste en face de chaque acteur...

    Peut-on obtenir l'id de l'élément que l'on voit en premier dans le div pendant un scroll ?

    Peut-on obtenir l'id des éléments visibles lors d'un scroll?

    N'y a-t-il que ces propriétés d'un div ayant un rapport avec le scroll ?
    scrollLeft
    scrollTop
    scrollWidth
    scrollHeight

    Sinon, je peux faire un rapport avec scrollHeight et scrollTop, mais j'aimerais savoir tout de même si c'est possible d'obtenir la position d'un élément dans un scroll, si il est visible ou non etc...


    Merci d'avance à tous

    Ps : j'ai utilisée la fonction recherche qui est mon amie

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    soit tu as des cartouches de même taille contenant les infos et là tu mets le scrollTop du div sur l'élément concerné,
    soit tu as une relation proposrtionnelle entre les deux scrollTop et tu appliques le coeff sur le scroll du premier div ...

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10
    Points : 8
    Points
    8
    Par défaut
    Les éléménts des deux div n'ont pas de rapport de proportion.

    Je ne comprends pas ta première solution :

    On peut positionner le scroll sur un sous élément du div ? Les sous éléments du div de gauche par exemple ont tous la même taille, mais les sous éléments de droite...

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    sert toi des ancres ...

    par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    	function ShowAddress(Ancre) {
    document.getElementById('container').scrollTop=document.getElementById('_'+Ancre).offsetTop;
    		return true;
    		}
    je me sers de ce bout de code pour afficher une adresse dans un div à partir d'un onmouseover sur une area ...

    a toi de definir lévènement qui doit déclencher l'affichage

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10
    Points : 8
    Points
    8
    Par défaut
    Merci, c'est le offsetTop que je ne connaissais pas....

    Je vais regarder ça.

    Pour l'instant j'ai fait un truc avec les proportions, ça fonctionne, mais que sur l'une des deux scrollbars. Si je fais les deux, ça remonte tout seul (c'est très joli au passage)

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10
    Points : 8
    Points
    8
    Par défaut
    Je ne parviens pas à mettre tel ou tel élément face à un élément de l'autre liste.

    Du coup j'ai utilisé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    function synchro(s,t){
       	var ttop = t.scrollTop;
       	var stop = s.scrollTop;
       	var theight = t.scrollHeight;
       	var sheight = s.scrollHeight;
       	var taillelistefilms = 448;
    	var taillerepliques = 430;
    	t.scrollTop = ( theight - taillelistefilms ) / ( ( sheight - taillerepliques ) / stop );
    }
    Maintenant je cherche un moyen de récupérer dynamiquement la hauteur de taille liste films et taille repliques, car je trouve ça "crade" et pas pratique d'aller bricoler le js à chaque fois que je veux changer le css....

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10
    Points : 8
    Points
    8
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    document.getElementById("id_de_l_element").offestHeight;
    me donne la valeur de la hauteur de la boite.

    Impeccable donc.

    Merci

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

Discussions similaires

  1. [AJAX] Ajax, formulaire, div et select
    Par n8ken dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 23/09/2006, 10h51
  2. [DIV][Javascript] créer une DIV sur onmouseover
    Par pmartin8 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 30/08/2006, 15h10
  3. [Javascript] déplacement de div suivant souris
    Par LE NEINDRE dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 20/06/2006, 16h45
  4. [débutant] Scrollbar et div
    Par mavina dans le forum Balisage (X)HTML et validation W3C
    Réponses: 9
    Dernier message: 20/04/2006, 11h03
  5. [Javascript] Rafraichir un div...
    Par Empty_body dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 28/02/2006, 16h13

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