↑こちらの動画をご覧ください。要素にhoverすると、ツールチップが表示できます。cssのみでできているので、とても簡単に実装することができます。
それでは次のセクションから、上記の動画のような、htmlとcssだけで作成できるツールチップを実装するためのコードを書いていきます。
コードをご紹介
[html]
<div class="tooltip-container"> <p class="tooltip-container-target">hoverでTooltipを表示</p> <span class="tooltip-item">Only CSS Tooltip</span> </div> <div class="tooltip-container"> <p class="tooltip-container-target">hoverで右にTooltipを表示</p> <span class="tooltip-item is-right">Only CSS Tooltip</span> </div> <div class="tooltip-container"> <p class="tooltip-container-target">hoverで左にTooltipを表示</p> <span class="tooltip-item is-left">Only CSS Tooltip</span> </div> <div class="tooltip-container"> <p class="tooltip-container-target">hoverで上にTooltipを表示</p> <span class="tooltip-item is-top">Only CSS Tooltip</span> </div>
↑上から順に、デフォルト状態(下に出ます)、
右に表示、左に表示、上に表示です。
[css]
.tooltip-container { margin: 100px auto; position: relative; /* width: max(264px, min(calc(100vw - 8px), 600px)); */ text-align: center; width: clamp(240px, calc(100vw - 8px), 240px); } .tooltip-item { background: hsla(180, 75%, 70%, 1); border-radius: 5px; color: #fff; display: block; font-size: .75rem; left: 50%; opacity: 0; padding: .25rem .75rem; position: absolute; transform: translateX(-50%); transition: opacity .3s; width: 7rem; } .tooltip-container-target { cursor: pointer; display: block; } .tooltip-container-target:hover + .tooltip-item { opacity: 1; } .tooltip-item.is-left { left: -140px; top: 50%; transform: translateY(-50%); } .tooltip-item.is-right { left: initial; right: -140px; top: 50%; transform: translateY(-50%); } .tooltip-item.is-top { left: 50%; top: -2.5rem; transform: translateX(-50%); }
↑重要なのは、
.tooltip-container-target:hover + .tooltip-item
この部分です。隣接セレクタ( + ) を使用して、
.tooltip-container-target の「隣の」
.tooltip-item に対してのスタイルを設定していると言うことです。
ツールチップが表示されるデフォルト位置は下で、そのほかは
.is-left, .is-right, .is-top
という各classを付与することで、それぞれの位置に表示させている仕組みになります。
この記事のまとめ
今回は、いたってシンプルながら、
結構使い道のある、cssとhtmlだけで作るツールチップについて、作り方をご紹介しました。
これ、なんか見覚えがあるなと思われる方もいるかもしれませんが、
こちらの記事で以前ご紹介している Vuetify の v-tooltip と、見た目的には同じようなUIパーツですよね。
意外にも、こんな単純なコードで、似たようなパーツを再現できます。
特定の何かに依存せず、
こうした、シンプルかつ基礎的な仕組みでできるUIパーツの作り方をたくさん覚えておくと
仮にVuetifyが使えなかった案件ではどうするのか等、
色々な状況に対応しやすくなりますのでおすすめです。
当サイトでは Vuetify や Vue.js 等にからめた内容の記事が多い傾向ですが、
このようなシンプルなコードで再現できるパーツの作例についての記事も、
今後、数を増やしていけたらと考えています。
※この記事は、内容の品質向上を目的に、随時更新を行う場合があります。