スパン要素にツールチップを追加するにはどうすればよいですか?


364

次のコードでは、ユーザーがスパンをホバーしたときにツールチップが表示されるようにしたいのですが、どうすればよいですか?リンクを使いたくありません。

<span> text </span>

回答:


677

簡単な組み込みの方法は次のとおりです。

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

それはあなたにプレーンテキストのツールチップを与えます。フォーマットされたHTMLを含む豊富なツールチップが必要な場合は、ライブラリを使用してそれを行う必要があります。幸いにもそれらの負荷があります


1
しかし、スパンにテキストがない場合、これは機能しますか?たとえば、bg-imageで空のスパンを言うと?
Augiwan 2013年

1
@UGS:あなたの要素があなたが思っているサイズであると確信していますか?私のようにピンクの背景にしてみてください。:-)
RichieHindle 2013年

どうもありがとう。!しかし、私はtipsy.jsを使用しただけで、私が望んでいたものより良く見えます。:Dそして、この記事は私の混乱を助けました:htmlgoodies.com/tutorials/html_401/article.php/3479661/…ツールチップが「テキスト」に対して機能すると書いてあります
Augiwan

1
こんにちは、誰かがこれが一部またはすべてのHTMLフレーバーの標準であるかどうかを明確にできますか?
ジョナサン

@jonathan:少なくともHTML4以降は標準となっています:w3.org/TR/html4/struct/global.html#adef-title
RichieHindle

97

純粋なCSSを使用したカスタムツールチップ-JavaScriptは不要:

ここの例(コード付き) / 全画面の例

デフォルトのtitle属性ツールチップの代わりに、:before/ :after 疑似要素とHTML5 data-*属性を使用して独自のカスタムCSSツールチップを作成できます

提供されているCSSを使用すると、data-tooltip属性を使用して要素にツールチップを追加できます。

data-tooltip-position属性を使用して、カスタムツールチップの位置を制御することもできます(受け入れられる値:top/ right/ bottom/ left)。

たとえば、次のコードはspan要素の下部に配置されたtooltopを追加します。

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

ここに画像の説明を入力してください

これはどのように作動しますか?

attr()関数を使用してカスタム属性値を取得することにより、疑似要素を含むカスタムツールチップを表示できます。

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

ツールチップの配置に関しては、 属性セレクターをですをし、属性の値に基づいて配置を変更するです。

ここの例(コード付き) / 全画面の例

例で使用されている完全なCSS-必要に応じてこれをカスタマイズしてください。

[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ほんと?いつか調べます。ありがとう。
Josh Crozier 2015年

5
はい、私はそれをテストしただけで、それがうまくいかなかったのも驚きませんでした。古き良きIE!;)
SearchForKnowledge 2015年

@JoshCrozierはとても役に立ちました
JIBIN BJ 2017

20

ほとんどのブラウザーでは、title属性はツールチップとしてレンダリングされ、通常、どのような種類の要素を操作するかについて柔軟です。

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

これらのすべては、ほとんどすべてのブラウザーでツールチップをレンダリングします。


6

基本的なツールチップには、次のものが必要です。

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


4

"title"あなたはそれにスタイルを適用する場合、属性は、いくつかの使用を検討して、ブラウザでツールチップのテキストとして使用されるプラグインを

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.