第2章-2節: HTMLとCSSだけで作ろう!基本のツールチップ
前のページでは、ツールチップがどんなものか、その魅力とちょっとした注意点について学んだね。
今回は、いよいよ実際にツールチップ作りに挑戦だ! プログラミング言語のJavaScriptを使わなくても、ウェブページの骨組みを作るHTMLと、見た目を整えるCSSだけで、シンプルなツールチップが作れちゃうんだ。さっそく、その方法を見ていこう!
🧱 ステップ1: HTMLで骨組みを作ろう
まず、ツールチップを表示させたい元のテキスト(これを「トリガー要素」と呼ぼう)と、ツールチップとして表示する説明文(これを「ツールチップテキスト」と呼ぼう)を用意するよ。
HTMLでは、トリガー要素の中に、ツールチップテキストを配置するのが一般的なんだ。例えば、こんな感じにするよ。
<p>
これは普通の文章です。ここに
<span class="tooltip-trigger-css">マウスを乗せてみてね!
<span class="tooltip-text-css">これがツールチップの内容だよ!HTMLとCSSだけで作れるんだ。</span>
</span>
というテキストがあります。
</p>
解説するね!
<span class="tooltip-trigger-css">
: これがトリガー要素。この部分にマウスカーソルが乗ると、ツールチップが表示されるようにするよ。class="tooltip-trigger-css"
というのは、後でCSSで「この要素はツールチップのトリガーだよ」と指定するための目印だ。
<span class="tooltip-text-css">
: これがツールチップテキスト。トリガー要素の中に書かれているね。class="tooltip-text-css"
も、CSSで見た目や動きを指定するための目印だよ。
<span>
タグは、主に文章の一部分にスタイルを適用したり、グループ化したりするときに使う、特に意味を持たないインライン要素だよ。ここでは、トリガーとツールチップテキストをうまく扱うために使っているんだ。
🎨 ステップ2: CSSで見た目を魔法のように変えよう!
HTMLで骨組みができたら、次はCSSの出番だ! CSSを使って、ツールチップテキストを普段は隠しておいて、トリガー要素にマウスが乗った時だけ、カッコよく表示されるようにしよう。
1. ツールチップテキストの基本スタイル
まずは、ツールチップテキスト自体の見た目を整えるよ。背景色、文字色、余白(パディング)、角の丸み(ボーダーラディウス)などを指定するんだ。
.tooltip-text-css {
background-color: #333;
color: #fff;
padding: 8px 10px;
border-radius: 6px;
font-size: 0.9em;
text-align: center;
width: 160px;
}
2. position
プロパティで配置の魔法!
ツールチップテキストをトリガー要素の近くに表示させるには、CSSのposition
プロパティが鍵になるよ。
- トリガー要素 (
.tooltip-trigger-css
) に position: relative;
を指定する。これは「私が基準点ですよ!」と宣言するようなもの。
- ツールチップテキスト (
.tooltip-text-css
) に position: absolute;
を指定する。これは「私は親戚の基準点(この場合は.tooltip-trigger-css
)を元に位置を決めます!」という意味。
こうすることで、ツールチップテキストは、親要素であるトリガー要素を基準にして、top
, bottom
, left
, right
プロパティで好きな位置に配置できるようになるんだ。
例えば、トリガー要素の上に表示したい場合は、bottom: 130%;
(親要素の下辺から130%上の位置) と left: 50%; margin-left: -80px;
(親要素の左右中央) のように指定するよ。margin-left: -80px;
は、ツールチップテキストの幅(160px)の半分を左にずらして、きれいに中央揃えするためのテクニックだ。
.tooltip-trigger-css {
position: relative;
display: inline-block;
}
.tooltip-text-css {
position: absolute;
z-index: 10;
bottom: 130%;
left: 50%;
margin-left: -80px;
}
3. :hover
で現れろ!表示・非表示の魔法
いよいよ、マウスが乗った時だけツールチップテキストを表示させる魔法だよ!これはCSSの「疑似クラス」という機能の中の :hover
を使うと簡単にできるんだ。
まず、普段はツールチップテキストを隠しておく。これには、visibility: hidden;
(見えなくする)とopacity: 0;
(完全に透明にする)を指定するよ。
そして、トリガー要素 (.tooltip-trigger-css
) にマウスが乗った時 (:hover
) に、その中にあるツールチップテキスト (.tooltip-text-css
) のスタイルを visibility: visible;
と opacity: 1;
に変えるんだ。
さらに、transition
プロパティを指定しておくと、opacity
(透明度)がゆっくり変わって、フワッと表示されるアニメーション効果もつけられるよ!
.tooltip-text-css {
visibility: hidden;
opacity: 0;
transition: opacity 0.3s ease, visibility 0.3s ease;
}
.tooltip-trigger-css:hover .tooltip-text-css {
visibility: visible;
opacity: 1;
}
display: none;
と display: block;
で表示・非表示を切り替える方法もあるけど、display
プロパティはtransition
アニメーションが効かないんだ。だから、フワッとした効果をつけたい場合は visibility
と opacity
の組み合わせがおすすめだよ。
4. 職人技!CSSで吹き出しの「矢印」を作ろう
ツールチップがただの四角い箱だとちょっと味気ないよね。そこで、吹き出しによくある「矢印」(しっぽみたいな部分)もCSSだけで作ってみよう!これには「疑似要素」の ::after
(または ::before
) と、border
プロパティのちょっとしたテクニックを使うよ。
考え方はこうだ。
::after
を使って、ツールチップテキストにくっついた「空っぽの小さな箱」を作る。
- その箱のボーダー(枠線)だけを使って三角形を作るんだ。例えば、上向きの三角形を作りたいなら、下ボーダーだけ色をつけて、左右のボーダーは透明にし、上ボーダーは幅0にするんだ。不思議だけど、こうすると三角形ができる!
- できた三角形を、ツールチップ本体のちょうどいい位置に配置する。
.tooltip-text-css::after {
content: "";
position: absolute;
top: 100%;
left: 50%;
margin-left: -5px;
border-width: 5px;
border-style: solid;
border-color: #333 transparent transparent transparent;
}
この例では、border-color
の順番が「上 右 下 左」に対応していて、#333 transparent transparent transparent
は「上ボーダーだけ色をつけ、右・下・左ボーダーは透明」という意味になるんだ。これで、ツールチップ本体の下側に、下を向いた小さな三角形ができるよ。
✨ やってみよう!HTMLとCSSを合体!
さあ、これまでに説明したHTMLとCSSを全部組み合わせると、こんな感じのツールチップができるよ!下のテキストにマウスを乗せてみてね。
このサイトでは HTMLHyperText Markup Language の略だよ。ウェブページの骨組みを作るんだ。 や
CSSCascading Style Sheets の略!ウェブページの見た目をデザインするよ。 を使って、
クールなツールチップこれは右側に出るツールチップのサンプルだよ!CSSだけでこんなこともできる! を作る方法を学ぶよ!
実際に使ったHTMLとCSSの全コードはこうなっているよ。このコードをコピーして、自分のパソコンで試してみるのもいいね!
HTMLコード:
<p>
このサイトでは <span class="tooltip-trigger-css">HTML
<span class="tooltip-text-css">HyperText Markup Language の略だよ。ウェブページの骨組みを作るんだ。</span>
</span> や
<span class="tooltip-trigger-css">CSS
<span class="tooltip-text-css">Cascading Style Sheets の略!ウェブページの見た目をデザインするよ。</span>
</span> を使って、
<span class="tooltip-trigger-right">クールなツールチップ
<span class="tooltip-text-right">これは右側に出るツールチップのサンプルだよ!CSSだけでこんなこともできる!</span>
</span> を作る方法を学ぶよ!
</p>
CSSコード:
.tooltip-trigger-css {
position: relative;
display: inline-block;
border-bottom: 1px dashed #3498db;
cursor: help;
}
.tooltip-text-css {
visibility: hidden;
opacity: 0;
width: 160px;
background-color: #333;
color: #fff;
text-align: center;
border-radius: 6px;
padding: 8px 10px;
font-size: 0.9em;
line-height: 1.4;
position: absolute;
z-index: 10;
bottom: 130%;
left: 50%;
margin-left: -80px;
transition: opacity 0.3s ease, visibility 0.3s ease;
}
.tooltip-text-css::after {
content: "";
position: absolute;
top: 100%;
left: 50%;
margin-left: -5px;
border-width: 5px;
border-style: solid;
border-color: #333 transparent transparent transparent;
}
.tooltip-trigger-css:hover .tooltip-text-css {
visibility: visible;
opacity: 1;
}
.tooltip-trigger-right {
position: relative;
display: inline-block;
border-bottom: 1px dashed #e67e22;
cursor: help;
}
.tooltip-text-right {
visibility: hidden; opacity: 0;
width: 150px; background-color: #c0392b; color: #fff;
text-align: center; border-radius: 6px; padding: 8px 10px; font-size: 0.9em; line-height: 1.4;
position: absolute; z-index: 10;
top: 50%;
left: 110%;
transform: translateY(-50%);
transition: opacity 0.3s ease, visibility 0.3s ease;
}
.tooltip-text-right::before {
content: ""; position: absolute;
top: 50%; right: 100%;
margin-top: -5px;
border-width: 5px; border-style: solid;
border-color: transparent #c0392b transparent transparent;
}
.tooltip-trigger-right:hover .tooltip-text-right {
visibility: visible; opacity: 1;
}
デモでは、上に出るツールチップと右に出るツールチップの2種類を作ってみたよ。矢印の向きや配置を変えるだけで、色々なバリエーションが作れるんだ!
🇬🇧英語の豆知識コーナー
CSSの便利な機能に関連する英単語だよ!
-
Pseudo-class
意味:疑似クラス(例: :hover
, :focus
, :nth-child()
など)
Original: The :hover
pseudo-class is used to select elements when you mouse over them.
意訳::hover
疑似クラスは、要素の上にマウスカーソルを置いたときにその要素を選択するために使用されます。
-
Pseudo-element
意味:疑似要素(例: ::before
, ::after
, ::first-line
など)
Original: You can use the ::after
pseudo-element to add an arrow to the tooltip.
意訳:::after
疑似要素を使って、ツールチップに矢印を追加できます。
-
Positioning
意味:配置、位置決め
Original: CSS offers various properties for element positioning, like 'relative' and 'absolute'.
意訳:CSSは、「relative」や「absolute」のように、要素の配置のための様々なプロパティを提供しています。
-
Transition
意味:遷移、移り変わり、トランジション(CSSではアニメーション効果)
Original: Adding a CSS transition makes the tooltip appear smoothly.
意訳:CSSトランジションを追加すると、ツールチップがスムーズに表示されるようになります。
まとめ
今回は、HTMLとCSSだけで作る基本的なツールチップの方法を、ステップごとに見てきたね!
- HTMLでトリガー要素とツールチップテキストの骨組みを作る。
- CSSの
position
で配置し、:hover
とvisibility
/opacity
で表示・非表示をコントロール。
transition
でフワッとしたアニメーション効果も!
- 疑似要素と
border
テクニックで、吹き出しの矢印も作れたね。
HTMLとCSSだけでも、こんなにインタラクティブなものが作れるなんて、面白いよね!
でも、もっと複雑なツールチップや、マウス操作以外(例えばクリック)で表示したい場合、あるいはツールチップの内容を動的に変えたい場合は、やっぱりJavaScriptの力が必要になってくるんだ。
次のページでは、JavaScriptを使って、もっとできることを広げたツールチップ作りに挑戦してみよう!