【HTML】ツールチップを表示する方法
title属性を使う方法
HTMLのtitle属性を使うと、簡単にツールチップを表示できます。 ユーザーがマウスを要素の上に載せると、ブラウザが自動的にツールチップを表示します。
例
<button title="これはツールチップです">ホバーしてください</button>
結果:
CSSでツールチップを作成する
title属性は簡単ですが、デザインをカスタマイズできません。 そこで、CSSを使って独自のツールチップを作成する方法を紹介します。
基本的なCSSツールチップ
以下のHTMLとCSSでシンプルなツールチップを作れます。
<div class="tooltip">
ホバーしてください
<span class="tooltip-text">これはツールチップです</span>
</div>
対応するCSS:
.tooltip {
position: relative;
display: inline-block;
cursor: pointer;
}
.tooltip-text {
visibility: hidden;
position: absolute;
background-color: black;
color: white;
padding: 5px;
border-radius: 5px;
bottom: 100%;
left: 50%;
transform: translateX(-50%);
white-space: nowrap;
}
.tooltip:hover .tooltip-text {
visibility: visible;
}
結果
ホバーしてください
これはツールチップです
JavaScriptでツールチップを作成する
JavaScriptを使えば、より動的なツールチップを作成できます。 例えば、マウスの動きに応じてツールチップの位置を変更することが可能です。
例
<button id="tooltip-btn">ホバーしてください</button>
<div id="tooltip" style="display:none; position:absolute; background:black; color:white; padding:5px; border-radius:5px;">
これはツールチップです
</div>
<script>
const btn = document.getElementById("tooltip-btn");
const tooltip = document.getElementById("tooltip");
btn.addEventListener("mouseover", (event) => {
tooltip.style.display = "block";
tooltip.style.left = event.pageX + "px";
tooltip.style.top = event.pageY - 30 + "px";
});
btn.addEventListener("mouseout", () => {
tooltip.style.display = "none";
});
</script>
結果
高度なツールチップの作成
さらに高度なツールチップを作るには、以下のような技術を組み合わせることができます:
- アニメーション(CSSのtransitionやJavaScriptのアニメーションライブラリ)
- ツールチップの遅延表示
- クリックイベントでのツールチップ表示
- 複数行のツールチップ
クリックでツールチップを表示
クリックするとツールチップを表示する例:
<button id="click-tooltip-btn">クリックしてください</button>
<div id="click-tooltip" style="display:none; position:absolute; background:black; color:white; padding:5px; border-radius:5px;">
クリックで表示するツールチップ
</div>
<script>
const clickBtn = document.getElementById("click-tooltip-btn");
const clickTooltip = document.getElementById("click-tooltip");
clickBtn.addEventListener("click", (event) => {
clickTooltip.style.display = (clickTooltip.style.display === "none") ? "block" : "none";
clickTooltip.style.left = event.pageX + "px";
clickTooltip.style.top = event.pageY - 30 + "px";
});
</script>