Wie füge ich einem Span-Element einen Tooltip hinzu?


364

Im folgenden Code soll ein Tooltip angezeigt werden, wenn der Benutzer die Zeitspanne überschreitet. Wie mache ich das? Ich möchte keine Links verwenden.

<span> text </span>

Antworten:


677

Hier ist die einfache, integrierte Methode:

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

Das gibt Ihnen einfache Text-Tooltips. Wenn Sie umfangreiche Tooltips mit formatiertem HTML benötigen, müssen Sie dazu eine Bibliothek verwenden. Zum Glück gibt es viele davon .


1
Aber funktioniert das, wenn sich kein Text in der Spanne befindet? Sagen Sie zum Beispiel eine leere Spanne mit einem BG-Bild?
Augiwan

1
@UGS: Bist du sicher, dass dein Element die Größe hat, die du denkst? Versuchen Sie, ihm einen rosa Hintergrund wie meinen zu geben. :-)
RichieHindle

Vielen Dank.! Aber ich habe nur tipsy.js verwendet und es sieht besser aus als das, was ich wollte. : D Und dieser Artikel hat zu meiner Verwirrung beigetragen : htmlgoodies.com/tutorials/html_401/article.php/3479661/… wo es heißt, dass der Tooltip für den "Text"
funktioniert

1
Hallo, kann jemand klären, ob dies in einigen / allen HTML-Varianten Standard ist?
Jonathan dos Santos

@ Jonathan: Es ist Standard seit mindestens HTML4: w3.org/TR/html4/struct/global.html#adef-title
RichieHindle

97

Benutzerdefinierte Tooltips mit reinem CSS - kein JavaScript erforderlich:

Beispiel hier (mit Code) / Vollbildbeispiel

Alternativ zu den Standard- titleAttribut-Tooltips können Sie mithilfe von :before/ :after pseudo-Elementen und HTML5- data-*Attributen eigene CSS-Tooltips erstellen .

Mit dem bereitgestellten CSS können Sie einem Element mithilfe des data-tooltipAttributs einen Tooltip hinzufügen .

Sie können auch die Position der benutzerdefinierten steuern Tooltip das mit data-tooltip-positionAttribute (akzeptierten Werte: top/ right/ bottom/ left).

Im Folgenden wird beispielsweise eine QuickInfo hinzugefügt, die sich am unteren Rand des Bereichselements befindet.

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

Geben Sie hier die Bildbeschreibung ein

Wie funktioniert das?

Sie können die benutzerdefinierten QuickInfos mit Pseudoelementen anzeigen, indem Sie die benutzerdefinierten Attributwerte mithilfe der attr()Funktion abrufen.

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

Verwenden Sie zum Positionieren des Tooltips einfach die Attributauswahl und ändern Sie die Platzierung basierend auf dem Wert des Attributs.

Beispiel hier (mit Code) / Vollbildbeispiel

Vollständiges CSS, das im Beispiel verwendet wird - passen Sie es an Ihre Bedürfnisse an.

[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;
}

2
@SearchForKnowledge Wirklich? Ich werde mich irgendwann darum kümmern. Vielen Dank.
Josh Crozier

5
Ja, ich habe es gerade getestet und war auch nicht überrascht, dass es nicht funktioniert hat. Guter alter IE! ;)
SearchForKnowledge

@ JoshCrozier es hat sehr geholfen
JIBIN BJ

20

In den meisten Browsern wird das title-Attribut als QuickInfo gerendert und ist im Allgemeinen flexibel, mit welchen Elementen es arbeiten soll.

<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">

All dies rendert Tooltips in fast jedem Browser.


6

Für den grundlegenden Tooltip möchten Sie:

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


4

Das "title"Attribut wird vom Browser als Text für den Tooltip verwendet. Wenn Sie einen Stil darauf anwenden möchten, sollten Sie einige Plugins verwenden

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.