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

364

Dans le code suivant, je veux qu'une info-bulle s'affiche lorsque l'utilisateur survole la plage, comment dois-je faire? Je ne veux utiliser aucun lien.

<span> text </span>
MichaelICE
la source

Réponses:

677

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

<span title="My tip">text</span>

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

RichieHindle
la source
1
Mais cela fonctionne-t-il s'il n'y a pas de texte dans l'intervalle? Disons par exemple une plage vide avec une image bg?
Augiwan
1
@UGS: Êtes-vous sûr que votre élément est de la taille que vous pensez qu'il est? Essayez de lui donner un fond rose comme le mien. :-)
RichieHindle
Merci beaucoup.! Mais j'ai juste utilisé tipsy.js et ça a l'air mieux que ce que je voulais. : D Et cet article a contribué à ma confusion: htmlgoodies.com/tutorials/html_401/article.php/3479661/… où il est dit que l'info-bulle fonctionne pour le "texte"
Augiwan
1
Salut, quelqu'un peut-il préciser si cela est standard dans certains / tous les styles HTML?
Jonathan dos Santos
@jonathan: C'est standard depuis au moins HTML4: w3.org/TR/html4/struct/global.html#adef-title
RichieHindle
97

Infobulles personnalisées avec CSS pur - pas besoin de JavaScript:

Exemple ici (avec code) / Exemple plein écran

Comme alternative aux titleinfo-bulles d'attribut par défaut , vous pouvez créer vos propres info-bulles CSS personnalisées à l'aide des éléments:before / :after pseudo et des data-*attributs HTML5 .

En utilisant le CSS fourni, vous pouvez ajouter une info-bulle à un élément à l'aide de l' data-tooltipattribut.

Vous pouvez également contrôler la position de l'infobulle personnalisée à l'aide de l' data-tooltip-positionattribut (valeurs acceptées: top/ right/ bottom/ left).

Par exemple, ce qui suit ajoutera une boîte à outils positionnée au bas de l'élément span.

<span data-tooltip="Custom tooltip text." data-tooltip-position="bottom">Custom bottom tooltip.</span>

entrez la description de l'image ici

Comment cela marche-t-il?

Vous pouvez afficher les info-bulles personnalisées avec des pseudo-éléments en récupérant les valeurs d'attribut personnalisé à l'aide de la attr()fonction.

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

En termes de positionnement de l'infobulle, utilisez simplement le sélecteur d'attribut et modifiez le placement en fonction de la valeur de l'attribut.

Exemple ici (avec code) / Exemple plein écran

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

[data-tooltip] {
    display: inline-block;
    position: relative;
    cursor: help;
    padding: 4px;
}
/* Tooltip styling */
[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;
}
/* Dynamic horizontal centering */
[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%);
}
/* Dynamic vertical centering */
[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;
}

/* Tooltip arrow styling/placement */
[data-tooltip]:after {
    content: '';
    display: none;
    position: absolute;
    width: 0;
    height: 0;
    border-color: transparent;
    border-style: solid;
}
/* Dynamic horizontal centering for the tooltip */
[data-tooltip-position="top"]:after,
[data-tooltip-position="bottom"]:after {
    left: 50%;
    margin-left: -6px;
}
/* Dynamic vertical centering for the 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;
}
/* Show the tooltip when hovering */
[data-tooltip]:hover:before,
[data-tooltip]:hover:after {
    display: block;
    z-index: 50;
}
Josh Crozier
la source
2
@SearchForKnowledge Vraiment? J'y reviendrai à un moment donné. Merci.
Josh Crozier
5
Oui, je viens de le tester et je n'ai pas été surpris que cela ne fonctionne pas. Bon vieux IE! ;)
SearchForKnowledge
@JoshCrozier ça a beaucoup aidé
JIBIN BJ
20

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

<span title="This will show as a tooltip">Mouse over for a tooltip!</span>
<a href="http://www.stackoverflow.com" title="Link to stackoverflow.com">stackoverflow.com</a>
<img src="something.png" alt="Something" title="Something">

Tous ces éléments afficheront des info-bulles dans la plupart des navigateurs.

Brian Arnold Sinclair
la source
7

Pour l'infobulle de base, vous voulez:

<span title="This is my tooltip"> Hover on me to see tooltip! </span>

Abk
la source
4

l' "title"attribut sera utilisé comme texte pour l'infobulle par le navigateur, si vous voulez lui appliquer du style, pensez à utiliser certains plugins

Rony
la source