429 votes

Comment ajouter une info-bulle à un élément span ?

Dans le code suivant, je souhaite qu'une info-bulle apparaisse lorsque l'utilisateur survole le span, comment puis-je faire cela? Je ne veux pas utiliser de liens.

text

807voto

RichieHindle Points 98544

Voici la manière simple et intégrée :

texte

Cela vous donne des info-bulles de texte simple. Si vous voulez des info-bulles riches, avec du HTML formaté, vous devrez utiliser une bibliothèque pour le faire. Heureusement, il y en a plein.

1 votes

Mais est-ce que cela fonctionne s'il n'y a aucun texte dans le span? Par exemple, un span vide avec une image de fond?

1 votes

@UGS: Êtes-vous sûr que votre élément est de la taille que vous pensez? Essayez de lui donner un fond rose comme le mien. :-)

0 votes

Merci beaucoup.! Mais j'ai juste utilisé tipsy.js et ça rend mieux que ce que je voulais. :D Et cet article a aidé à dissiper ma confusion : htmlgoodies.com/tutorials/html_401/article.php/3479661/… où il est dit que l'infobulle fonctionne pour le "texte"

127voto

Josh Crozier Points 30040

Tooltips personnalisés avec du CSS pur - pas besoin de JavaScript :

Exemple ici (avec le code) / Exemple en plein écran

Comme alternative aux tooltips par défaut de l'attribut title, vous pouvez créer vos propres tooltips CSS personnalisés en utilisant les pseudo-éléments :before/:after et les pseudo-éléments ainsi que les data-* attributs HTML5.

En utilisant le CSS fourni, vous pouvez ajouter un tooltip à un élément en utilisant l'attribut data-tooltip.

Vous pouvez également contrôler la position du tooltip personnalisé en utilisant l'attribut data-tooltip-position (valeurs acceptées : top/right/bottom/left).

Par exemple, ce qui suit ajoutera un tooltip positionné en bas de l'élément span.

Tooltip personnalisé en bas.

Description de l'image

Comment cela fonctionne-t-il ?

Vous pouvez afficher les tooltips personnalisés avec les pseudo-éléments en récupérant les valeurs d'attributs personnalisés en utilisant la attr() fonction.

[data-tooltip]:before {
    content: attr(data-tooltip);
}

En ce qui concerne le positionnement du tooltip, utilisez simplement le sélecteur d'attribut et changez l'emplacement en fonction de la valeur de l'attribut.

Exemple ici (avec le code) / Exemple en plein écran

Le CSS complet utilisé dans l'exemple - personnalisez-le selon vos besoins.

[data-tooltip] {
    display: inline-block;
    position: relative;
    cursor: help;
    padding: 4px;
}
/* Style du tooltip */
[data-tooltip]:before {
    content: attr(data-tooltip);
    display: none;
    position: absolute;
    background: #000;
    color: #fff;
    padding: 4px 8px;
    font-size: 14px;
    line-height: 1.4;
    min-width: 100px;
    text-align: center;
    border-radius: 4px;
}
/* Centrage horizontal dynamique */
[data-tooltip-position="top"]:before,
[data-tooltip-position="bottom"]:before {
    left: 50%;
    -ms-transform: translateX(-50%);
    -moz-transform: translateX(-50%);
    -webkit-transform: translateX(-50%);
    transform: translateX(-50%);
}
/* Centrage vertical dynamique */
[data-tooltip-position="right"]:before,
[data-tooltip-position="left"]:before {
    top: 50%;
    -ms-transform: translateY(-50%);
    -moz-transform: translateY(-50%);
    -webkit-transform: translateY(-50%);
    transform: translateY(-50%);
}
[data-tooltip-position="top"]:before {
    bottom: 100%;
    margin-bottom: 6px;
}
[data-tooltip-position="right"]:before {
    left: 100%;
    margin-left: 6px;
}
[data-tooltip-position="bottom"]:before {
    top: 100%;
    margin-top: 6px;
}
[data-tooltip-position="left"]:before {
    right: 100%;
    margin-right: 6px;
}

/* Style/placement de la flèche du tooltip */
[data-tooltip]:after {
    content: '';
    display: none;
    position: absolute;
    width: 0;
    height: 0;
    border-color: transparent;
    border-style: solid;
}
/* Centrage horizontal dynamique pour le tooltip */
[data-tooltip-position="top"]:after,
[data-tooltip-position="bottom"]:after {
    left: 50%;
    margin-left: -6px;
}
/* Centrage vertical dynamique pour le tooltip */
[data-tooltip-position="right"]:after,
[data-tooltip-position="left"]:after {
    top: 50%;
    margin-top: -6px;
}
[data-tooltip-position="top"]:after {
    bottom: 100%;
    border-width: 6px 6px 0;
    border-top-color: #000;
}
[data-tooltip-position="right"]:after {
    left: 100%;
    border-width: 6px 6px 6px 0;
    border-right-color: #000;
}
[data-tooltip-position="bottom"]:after {
    top: 100%;
    border-width: 0 6px 6px;
    border-bottom-color: #000;
}
[data-tooltip-position="left"]:after {
    right: 100%;
    border-width: 6px 0 6px 6px;
    border-left-color: #000;
}
/* Afficher le tooltip au survol */
[data-tooltip]:hover:before,
[data-tooltip]:hover:after {
    display: block;
    z-index: 50;
}

2 votes

@SearchForKnowledge Vraiment? Je vais regarder ça à un moment donné. Merci.

5 votes

Oui, je viens de le tester et je n'ai pas été surpris que ça ne fonctionne pas. Bon vieux IE! ;)

0 votes

@JoshCrozier cela a beaucoup aidé

22voto

Brian Arnold Points 2176

Dans la plupart des navigateurs, l'attribut title s'affichera sous forme d'info-bulle, et est généralement flexible quant aux types d'éléments avec lesquels il fonctionnera.

Passez la souris pour une info-bulle !
stackoverflow.com

Tous ceux-ci afficheront des info-bulles dans la plupart des navigateurs.

12voto

Abk Points 888

Pour l'info-bulle de base, vous voulez :

 Survoler moi pour voir l'info-bulle!

6voto

Rony Points 6340

L'attribut title sera utilisé comme texte pour l'infobulle par le navigateur. Si vous souhaitez lui appliquer un style, envisagez d'utiliser certaines bibliothèques, par exemple jQuery UI.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X