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 :

Positionner une infobulle


Sujet :

JavaScript

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Positionner une infobulle
    Bonjour à toutes et à tous,

    Je suis un petit nouveau et j'aimerais savoir si l'on pouvait m'aider pour un problème dont je ne sais même pas s'il est solvable ...
    En effet, je ne connais absolument rien en javascript, j'ai seulement quelques notions de sa logique (en revanche, je m'y connais un peu plus en html, css, php).

    Donc mon soucis est que j'aimerais, sur mon site joomla, bidouiller un module (allevents) pour qu'un évènement js puisse se trouver à un endroit précis sur ma page (donc pas en absolute) ...
    En gros, c'est un module pour faire un calendrier, et j'aimerais que lorsque l'on passe avec la souris sur une date avec un évènement (contenu) créé, on voit apparaître la "tooltip" du module à un endroit précis de ma page (du genre à 10px left de ma div "menu" ), et ne pas utiliser :
    top: event.page.y, left: event.page.x
    pour positionner la "boîte" dans l'espace.

    Voici le code javascript de l'évènement "apparition+positionnement de la tooltip" :
    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    //
    // Code JS dérivé de Hot!Ajax Tooltips (http://www.hotajax.org/mootools/tooltips-rating.html)
    //
    // Ce code va créer dynamiquement la DIV qui servira  à l'affichage du tooltip dans le module AllEvents - Calendrier
    //
     
    var ToolTip = new Class({
     
       initialize: function (trigger, content_name, options) {
     
    	  // trigger est le ID de la zone à l'écran sur laquelle le tooltip doit s'afficher.   C'est le ID de la cellule du tableau qui affiche
    	  // le numéro du jour
     
          // content_name est un nom.   Il s'agit d'un ID unique qui désigne un élément HTML de la page
    	  // exemple : si content_name="content_name"; cela veut dire que dans le code de la page HTML, j'ai quelque chose comme ceci :
      	  //           <span id='mod_803_tooltip_DISPLAY_3'>bla bla</span>
     	  // Le type d'élément (span, div, ...) n'a aucune importance. 
     
    	  if (obj=getElementById(content_name)) {
             content = obj.innerHTML;
             bContinue = true;
    	  } else {		  
    	     // La DIV associée au tooltip n'existe pas ==> il n'y a rien à afficher 	  
    		 //msg = 'calendrier_tooltip.js - ERROR : HTML ELEMENT WITH ID ['+content_name+'] NOT DEFINED IN YOUR PAGE.  REVIEW HOW YOU HAVE BUILT THE DrawTooltips() FUNCTION IN F.I. THE ALLEVENTS MODULE.';
    	     //content = '<div style="text-align:center;background-color:#F5A9A9;color:#DF0101;">'+msg+'</div>';
    	     bContinue = false;
    	  }
     
          this.setOptions({
             duration     : 300,
             transition   : Fx.Transitions.linear,
             wait         : false,
             tooltipClass : "se-tooltip",
             style        : "default",
             width        : "250",
             display      : "inline",
             mode         : "cursor",
             sticky       : 0
          }, options);
     
          if (bContinue==true) {
     
             this.open = false;
             this.trigger = getElementById(trigger);
     
             this.tooltip= (new Element("div",
                {'class': this.options.tooltipClass,
                   styles:{position: "absolute", top: 150 + "px", left: 620 + "px", "z-index": 50, visibility: "hidden", width: this.options.width}
                })).injectTop(document.body);
     
             this.tooltip_style = (new Element("div", {'class': this.options.style})).injectInside(this.tooltip);
             this.tooltip_tl    = (new Element("div", {'class': "tooltip-tl", styles: {width: this.options.width}})).injectInside(this.tooltip_style);
             this.tooltip_tr    = (new Element("div", {'class': "tooltip-tr"})).injectInside(this.tooltip_tl);
             this.tooltip_t     = (new Element("div", {'class': "tooltip-t", styles: {height: 15}})).injectInside(this.tooltip_tr);
             this.tooltip_l     = (new Element("div", {'class': "tooltip-l", styles: {width: this.options.width}})).injectAfter(this.tooltip_tl);
             this.tooltip_r     = (new Element("div", {'class': "tooltip-r"})).injectInside(this.tooltip_l);
             this.tooltip_m     = (new Element("div", {'class': "tooltip-m"})).injectInside(this.tooltip_r).setHTML(content);
             this.tooltip_bl    = (new Element("div", {'class': "tooltip-bl", styles: {width: this.options.width}})).injectAfter(this.tooltip_l);
             this.tooltip_br    = (new Element("div", {'class': "tooltip-br"})).injectInside(this.tooltip_bl);
             this.tooltip_b     = (new Element("div", {'class': "tooltip-b"})).injectInside(this.tooltip_br);
             this.tooltip_arrow = (new Element("div", {'class': "tooltip-arrow", styles: {height: 23}})).injectInside(this.tooltip_b);
     
             if (this.options.sticky) {this.close = (new Element("div", {'class': "tooltip-close"})).injectInside(this.tooltip_tl);}
     
             this.fx = new (Fx.Styles)(this.tooltip, this.options);
     
             this.trigger.addEvent("mouseenter", this.show.bindWithEvent(this));
     
             if (this.options.sticky) {
                this.close.addEvent("mouseenter", this.hide.bindWithEvent(this));
             } else {
                this.trigger.addEvent("mouseleave", this.hide.bindWithEvent(this));
             }
          } // if (bContinue==true)
     
       },
     
       show: function (event) {
     
          if (!this.open) {    	  
             this.pos = this.position(event);
     
             // Left est peut-être négatif lorsque le tooltip s'affiche trop à gauche
             if (this.pos.left<0)this.pos.left=0;
     
             this.tooltip.setStyles({opacity: 0, top: this.pos.top + "px", left: this.pos.left + "px"});
             this.fx.start({opacity: 1, top: this.pos.top - 10 + "px"});
             this.open = true;
     
             /* Ce code vise � remplacer les signes &lt; et &gt; par leurs correspondant HTML.   Cette astuce permet d'�viter */
             /* des erreurs de compatibilit� W3C.   this.tooltip_m.innerHTML �tant le code HTML du tooltip (_m pour message)  */
     
             var s=this.tooltip_m.innerHTML;
             s=s.replace(/&lt;/gi, "<");
             s=s.replace(/&gt;/gi, ">");
             this.tooltip_m.innerHTML=s;         
          }
       },
     
       hide: function (event) {
          if (!(this.pos==undefined)) {
             this.fx.start({opacity: 0, top: this.pos.top - 20 + "px"});
          }
          this.open = false;
       },
     
        position: function (event) {
          var trg = this.trigger.getCoordinates();
          var tip = this.tooltip.getCoordinates();
     
          if (this.options.mode == "cursor") {
             var event = new Event(event);
             trg = $extend(trg, {top: event.page.y, left: event.page.x, width: 0});
          }
          return {top: trg.top - tip.height, left: trg.left - tip.width / 2 + trg.width / 2};
       }
     
       } // initialize: function (trigger, content, options) {
     
    ); // var ToolTip = new Class({
     
    ToolTip.implement(new Options);
    Bref bref bref

    J'attends vos réponses avec impatience !

    En espérant que vous puissiez m'aider !

    Merci d'avance pour vos réponses

    lacja

  2. #2
    Membre expérimenté Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Points : 1 519
    Points
    1 519
    Par défaut
    Bonjour,

    Citation Envoyé par lacja75 Voir le message
    et ne pas utiliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    top: event.page.y, left: event.page.x
    Y a-t'il une raison à ne pas vouloir utiliser event.page ?

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Bonjour !

    non, enfin je ne sais pas ... J'aimerais juste que l'event n'apparaisse pas au dessus de ma souris, mais plutôt à un endroit bien définis. D'où le problème pour le event.page non ?
    Est-ce possible ?

  4. #4
    Membre expérimenté Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Points : 1 519
    Points
    1 519
    Par défaut
    ah ok, je n'avais pas bien compris la question.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      show: function (event) {
     
          if (!this.open) {    	  
             this.pos = this.position(event);


    --->


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      show: function (event) {
     
          if (!this.open) {    	  
             this.pos = {left:40,top:40};

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Merci pour la réponse !

    C'est exactement dans cette direction que je voudrais partir !
    Maintenant, il ne me reste plus qu'à dire à l'événement, qu'il s'affiche dans une div déjà existante ... est-ce possible ?

Discussions similaires

  1. Comment positionner une infobulle en position prédéfinie?
    Par idamarco dans le forum Mise en page CSS
    Réponses: 6
    Dernier message: 18/02/2009, 15h03
  2. positionner une infobulle
    Par idamarco dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 24/11/2008, 22h59
  3. probléme pour positionner une infobulle
    Par stars333 dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 06/06/2007, 12h46
  4. comment Positionner une image sur une autre ?
    Par moumoule17 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 25/11/2004, 17h41
  5. Problème pour positionner une liste déroulante
    Par ouckileou dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 30/09/2004, 02h05

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