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 :

Déplacement horizontal d'un tooltip.


Sujet :

JavaScript

  1. #1
    Invité
    Invité(e)
    Par défaut Déplacement horizontal d'un tooltip.
    Bonjour,

    Mon tooltip suit le pointeur de la souris lorsqu'elle entre sur une zone SvgRect.

    J'aimerais limiter ce déplacement et faire que mon tooltip se déplace uniquement sur l'horizontal quel que soit la position du pointeur sur la hauteur de mon SvgRect.
    Un déplacement linaire horizontal.

    https://jsfiddle.net/n7Lm3bdy/

    L'action doit, si je ne fais pas erreur être réaliser sur mes "e.page", mais n'ai pas trouvé comment procéder.

    Bien cordialement.

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Bonjour,
    mais n'ai pas trouvé comment procéder.
    la position top doit être fixée par rapport à l'élément survolé et non par rapport à la page.

    L'événement sur le mousemove est plutôt à mettre sur l'élément survolé cela sera moins gourmand et plus logique.

    En résumé :
    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
    $infobulle = $(".infobulle");
     
    $('.enabledinfobulle').hover(function() {
      $infobulle.addClass('active');
      $infobulle.html($(this).attr('id') + '<div class="infobulle-pointer"></div>');
    }, function() {
      $infobulle.removeClass('active');
    });
     
    $('.enabledinfobulle').on('mousemove', function(e) {
      const top = $(this).offset().top - $infobulle.height() - 16;  // le décalage est à ajuster
      $infobulle.css({
        left: e.pageX,
        top: top
      });
    });

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Merci pour l'adaptation et cette réflexion plus que pertinente!
    C'est bien le résultat voulu.

    Citation Envoyé par NoSmoking Voir le message
    L'événement sur le mousemove est plutôt à mettre sur l'élément survolé cela sera moins gourmand et plus logique.
    Je vais peut-être dire une bêtise mais, l'événement sur le mousemove ne devrait-il pas l'être aussi pour left?
    Mes tentatives sur left bloquent le déplacement du tooltip.

    Bien cordialement

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Je vais peut-être dire une bêtise mais, l'événement sur le mousemove ne devrait-il pas l'être aussi pour left?
    Mes tentatives sur left bloquent le déplacement du tooltip.
    là je ne saisie pas où tu as un soucis.
    On place la tooltip verticalement à la même place pour tout mouvement sur un élément puis on déplace horizontalement celle-ci suivant la position de la souris sur ce même élément.

    Le code serait plus propre, et accessoirement plus efficace, écrit de la sorte :
    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
    $infobulle = $(".infobulle");
     
    $('.enabledinfobulle')
      .hover(function() {
        const top = $(this).offset().top - 40; // le décalage est à ajuster
        // on déplace verticalement
        $infobulle.css({
            top: top
          })
          .addClass('active')
          .html($(this)
            .attr('id') + '<div class="infobulle-pointer"></div>');
      }, function() {
        $infobulle.removeClass('active');
      });
     
    $('.enabledinfobulle')
      .on('mousemove', function(e) {
        // on déplace uniquement horizontalement
        $infobulle.css({
          left: e.pageX,
        });
      });
    ... mais je n'ai peut-être pas bien compris ce que tu as écrit !

  5. #5
    Invité
    Invité(e)
    Par défaut
    D'où mes dires "Je vais peut-être dire une bêtise" !!!

    Citation Envoyé par NoSmoking Voir le message
    On place la tooltip verticalement à la même place pour tout mouvement sur un élément puis on déplace horizontalement celle-ci suivant la position de la souris sur ce même élément.
    J'ai un peu de mal avec (l'élément survolé) et (la page).

    J'avais imaginé que le déplacement du tooltip pouvais aussi être géré par rapport à l'élément !
    C'est bien le cas avec left: e.pageX.

    Désolé pour le malentendu !

    Merci pour l'optimisation du code.
    Dernière modification par ProgElecT ; 09/05/2022 à 20h35. Motif: Pour le code sur une ligne ou une incrustation,[C=langage] ici votre code [/C]

  6. #6
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    J'ai un peu de mal avec (l'élément survolé) et (la page).
    • les éléments survolés sont les zones orange réactives, $('.enabledinfobulle')
    • la page ben c'est la page

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 14/03/2020, 09h20
  2. Déplacement horizontal de div selon le scroll
    Par Miksimus dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 17/12/2016, 10h25
  3. déplacement latéral et horizontal
    Par sylvain230 dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 16/06/2011, 14h04
  4. Réponses: 21
    Dernier message: 01/03/2009, 23h41
  5. déplacement horizontal de la souris
    Par zandru dans le forum Périphériques
    Réponses: 6
    Dernier message: 18/11/2008, 10h02

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