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 :

Positionnement d'une info-bulle


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    informatique de gestion
    Inscrit en
    Janvier 2013
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : informatique de gestion

    Informations forums :
    Inscription : Janvier 2013
    Messages : 94
    Par défaut Positionnement d'une info-bulle
    bonjour

    je voudrais possitionner mon info-bulle en haut a gauche de ma souris au lieu d'en bas a droite de ma souris mais malheureusement j ai pas des taille fixe pour mes fenetre donc je ne sais pas comment recuperer la taille de ma fenetre et la mettre dans mon code

    voici 1 image qui illustre ce que je veux

    Nom : posi2.png
Affichages : 217
Taille : 109,9 Ko

    et voici mon code

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    <script>
    // création conteneur info-bulle
    var oBulle = document.createElement('DIV');
    oBulle.id = 'info_bulle';
    document.body.appendChild(oBulle);
     
    var oClone,
        oInfo = document.querySelectorAll('.HoverfunctionMeps'),
        i, nb = oInfo.length;
     
    for (i = 0; i < nb; i += 1) {
      oInfo[i].onmouseover = function(e) {
        e = e || window.event;
        // récup. élément
        oClone = this.querySelector('.bulle');
        if( oClone){
          // copie de l'information
          oClone = oClone.cloneNode(true);
          // contenu visible
          oClone.style.display = 'block';
          // place
          oBulle.style.left = (e.clientX + 10) + 'px';
          oBulle.style.top = (e.clientY + 10) + 'px';
          oBulle.appendChild(oClone);
          // affiche
          oBulle.style.display = 'block';
           oBulle.style.background = '#DAE7FA';
        };
      };
      oInfo[i].onmouseout = function() {
        // vide le contenu
        while (oBulle.firstChild) {
          oBulle.removeChild(oBulle.firstChild);
        }
        // masque
        oBulle.style.display = 'none';
      };
    }
     
    </script><br><br>
    et voici ou je place mon info bulle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    // place
        oBulle.style.left = (e.clientX + 10) + 'px';
        oBulle.style.top = (e.clientY + 10) + 'px';
    merci pour vos reponse

  2. #2
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 58
    Par défaut
    Salut,

    pour récupérer la taille de la fenêtre tu peut utiliser ceci : http://www.w3schools.com/jsref/prop_win_innerheight.asp

    Par contre je me demande si il ne serais pas plus simple de positionner ton infos bulle au dessus des cases directement au lieu de la souris.

    Par exemple (sur ton image) imaginons que je positionne la souris sur la case VP à coter de M.

    Du coup tu peut récupérer la position absolut avec un effet hover sur ce titre et positionner ton info bull juste au dessus et du coup si tu rend ton infos bulle responsive l'info bulle se redimensionnera automatiquement avec le changement de taille et la position ne changera pas

    en tous cas c'est une idée

  3. #3
    Membre confirmé
    Homme Profil pro
    informatique de gestion
    Inscrit en
    Janvier 2013
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : informatique de gestion

    Informations forums :
    Inscription : Janvier 2013
    Messages : 94
    Par défaut
    merci pour ta reponse,

    c est possible de faire comme tu dis mais je ne sais pas comment l implémenter pour le premier et pour le 2eme,

    je suis stagiaire et il me reste pile poil une semaine pour corriger des petit bug sur mon programme

    merci pour ton aide

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 58
    Par défaut
    Ha ok,

    donc le lien que je tes donner ta t-il servie à récupérer et positionner l'info bulle comme tu voulais?

    sinon je me posais la question est ce que ton infos bulle est dans la balise body ou dans une div quand tu passe la souris pour l'effet hover?

    sinon pour récupérer la position d'un élément, on trouve des réponses en faisant une recherche.

    et du coup si on modifie ton code avec la récupération sa donne ceci :

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
        function FindPos(AObject)
        {
            var posX = 0, posY = 0;
     
            do
            {
                posX += AObject.offsetLeft;
                posY += AObject.offsetTop;
                AObject = AObject.offsetParent;
            }
            while( AObject != null );
     
            var pos = [];
            pos['X'] = posX;
            pos['Y'] = posY;
     
            return pos;
        }
     
     
        // récup. élément
        oClone = this.querySelector('.bulle');
        if( oClone){
          // copie de l'information
          oClone = oClone.cloneNode(true);
          // contenu visible
          oClone.style.display = 'block';
          // place
     
     
          /////////////////////////////////////
          // récup. posion élément
          var posElement = FindPos(this);   // <- j'ai mis ici this car je pense que cela correspond à ton élément survoler sinon il faut passer l'élément survoler par la souris
     
     
          oBulle.style.left = (posElement.posX  - this.clientWidth) + 'px';  // <- ici Left = position left de l'élément survoler - la hauteur de l'infos bulle (pour la positionner au dessus)
          oBulle.style.top = (posElement.posY  - this.clientHeight) + 'px';   // <- ici top = position top de l'élément survoler - la hauteur de l'infos bulle (pour la positionner à gauche)
     
     
          oBulle.appendChild(oClone);
          // affiche
          oBulle.style.display = 'block';
           oBulle.style.background = '#DAE7FA';
        };
    je pense que c'est ce que tu cherche.

  5. #5
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 211
    Par défaut
    Il est tout à fait possible de récupérer la largeur de l'élément à afficher, la position du survol, les dimensions de la page, de mélanger tout cela pour savoir où il faut positionner l'infoBulle, à gauche en haut ou en bas à droite en haut ou en bas....

    Je dirais simplement qu'une infoBulle ne doit pas contenir un roman mais une information succincte et pertinente.

    Dans ton cas au survol, d'après ce que je vois des images que tu nous montres, je ferais apparaître les caractéristiques principales de la personne avec un lien "pour en savoir plus" et au click j'ouvrirais une popin avec la totalité des informations, ta page aura plus de "légèreté" au survol de ton tableau.

  6. #6
    Membre confirmé
    Homme Profil pro
    informatique de gestion
    Inscrit en
    Janvier 2013
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : informatique de gestion

    Informations forums :
    Inscription : Janvier 2013
    Messages : 94
    Par défaut
    Bonjour,

    sinon je me posais la question est ce que ton infos bulle est dans la balise body ou dans une div quand tu passe la souris pour l'effet hover?
    merci pour ta reponse

    mon info-bulle est dans une div

    comment je met ton code dans le miens car la j ai essayer mais j arrive pas a l implementer

    smoking:

    je suis stagiaire est c est une reecriture exacte du programme que je dois faire malheureusement

    merci a vous en tout cas

Discussions similaires

  1. Afficher une info bulle (ControlTipText)
    Par milia dans le forum Access
    Réponses: 4
    Dernier message: 17/07/2006, 17h16
  2. Afficher une info bulle dans un composant AWT
    Par Marius_94 dans le forum AWT/Swing
    Réponses: 8
    Dernier message: 13/07/2006, 09h56
  3. Réponses: 2
    Dernier message: 09/05/2006, 10h14
  4. probleme sur une info bulle avec onMouseOver
    Par pouss dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 08/02/2006, 09h40
  5. Mettre une info bulle Tooltiptext sur un rectangle?
    Par danje dans le forum Graphisme
    Réponses: 7
    Dernier message: 21/11/2005, 09h31

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