| この記事の要点 |
|
title 属性とは
title はほぼ全ての HTML 要素に付けられるグローバル属性です。ブラウザは多くの場合、その要素にマウスポインタを乗せたとき小さなツールチップ(黄色や黒の小さな吹き出し)でその文字列を表示します。
<!-- 略語の展開 -->
<abbr title="HyperText Markup Language">HTML</abbr>
<!-- リンクの補足 -->
<a href="/policy" title="プライバシーポリシー(新しいタブで開きます)">policy</a>
<!-- アイコンボタンの説明 -->
<button title="お気に入りに追加">★</button>
<!-- フォーム要素のヒント -->
<input type="text" name="zip" title="郵便番号は7桁ハイフン無し">
<!-- iframe の説明(必須) -->
<iframe src="..." title="売上ダッシュボード"></iframe>
表示されるタイミング
| 環境 | 挙動 |
|---|---|
| デスクトップ(マウス) | ホバー後 1〜2 秒で表示 |
| キーボードフォーカス | 多くのブラウザで表示されない(Tab で来ても出ない) |
| スマホ・タブレット | 長押しで表示されることがある(実装依存) |
| スクリーンリーダー | 読まれることもあるが設定依存。NVDA は既定で読まない |
| iframe | 支援技術向けに必須とされる |
SEO とアクセシビリティ
SEO 観点
Google は title 属性をランキング要因として強く扱わないと公表しています。alt 属性のように画像の文脈把握には使われませんし、<a title="..."> の文字列がアンカーテキストの代替になることもありません。SEO 目的でキーワードを title 属性に詰めても無意味です。
アクセシビリティ観点
WCAG / WAI-ARIA は title 属性を「最後の手段(last resort)」と位置付けています:
- マウスでしか到達できない
- キーボードユーザーは見ることができないことが多い
- タッチデバイスでも見えない
- スクリーンリーダーが読むかどうかは設定次第
- テキストのスタイルを変えられない(フォントサイズ等の指定不可)
そのため重要な情報を title 属性だけに入れてはいけません。可視テキスト or aria-label 系で冗長に提供してください。
title vs aria-label vs aria-describedby
| 属性 | 用途 | 視覚表示 | 支援技術 |
|---|---|---|---|
title | 補足・ツールチップ | ブラウザ任意 | 読まれないことが多い |
aria-label | 要素自体の名前付け(アイコンボタン等) | 無し | 必ず読まれる |
aria-labelledby | 別要素のテキストを名前に | 無し(その要素は見える) | 必ず読まれる |
aria-describedby | 追加の説明 | 無し | 名前の後に読まれる |
| 可視テキスト | 本文・ラベル | あり | 確実に伝わる |
アイコンボタンの推奨パターン
<!-- ❌ title だけ。タッチユーザー・キーボードユーザーに伝わらない -->
<button title="削除">🗑</button>
<!-- ✅ aria-label で必ず読まれるようにする -->
<button aria-label="削除">🗑</button>
<!-- ✅ さらに視覚的なツールチップも欲しいなら title 併用 -->
<button aria-label="削除" title="削除">🗑</button>
<!-- ✅ ベスト: 可視テキスト + アイコン -->
<button>
<span aria-hidden="true">🗑</span>
削除
</button>
abbr 要素での略語展開
title 属性が今でも明確に推奨されるのが <abbr> 要素の略語展開です:
<p>
本サイトは
<abbr title="HyperText Markup Language">HTML</abbr> と
<abbr title="Cascading Style Sheets">CSS</abbr> と
<abbr title="JavaScript">JS</abbr>
で書かれています。
</p>
<!-- 同じ略語が複数回出る場合、初出だけで OK -->
<p><abbr title="World Wide Web Consortium">W3C</abbr> は標準化団体。</p>
<p>後続では W3C はそのまま書ける。</p>
CSS で点線下線を出して「ホバーで意味が出る」サインを視覚化するブラウザもあります:
abbr[title] {
text-decoration: underline dotted;
cursor: help;
}
CSS のみのカスタムツールチップ
title 属性のスタイルは制御できないため、独自ツールチップを作ることが多いです:
<button class="tip" data-tip="ファイルを保存します">💾</button>
<style>
.tip {
position: relative;
}
.tip::after {
content: attr(data-tip);
position: absolute;
bottom: 125%;
left: 50%;
transform: translateX(-50%);
background: #1e293b;
color: #fff;
padding: 4px 8px;
border-radius: 4px;
font-size: 12px;
white-space: nowrap;
opacity: 0;
pointer-events: none;
transition: opacity .2s;
}
.tip:hover::after,
.tip:focus-visible::after { /* ★ focus も必須 */
opacity: 1;
}
</style>
新しい popover 属性 (2024〜)
2024 年からは HTML 標準の popover 属性で、よりアクセシブルなツールチップが書けます:
<button popovertarget="tip1">?</button>
<div id="tip1" popover>このボタンはヘルプを開きます</div>
よくあるアンチパターン
- 長文を title に入れる → ツールチップが画面外にはみ出る・スクリーンリーダーが途中で切る
- リンクテキストと同じ文字列 → 冗長で読み上げが二重になる
- img の alt 代わりに title → alt が空のままだとスクリーンリーダーが画像を読まない
- 必須情報を title だけに → タッチ・キーボードユーザーに伝わらない
FAQ
Q: img の alt と title の違いは?
A: alt は画像が表示できないときの代替テキスト(必須)。title はホバーでの補足(任意)。両方付けるなら違う内容にする。
Q: iframe に title は必要?
A: 必須に近い扱いです。スクリーンリーダー利用者が iframe の中身を予測できる説明を必ず入れてください。
Q: title="" 空文字を入れるのは?
A: 親要素の title を打ち消す用途で使えますが、通常は属性ごと付けない方が良い。
子ページはありません
同階層のページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Git pushした変更の取消し|revert・履歴変更と保護の注意点 2026-10-15 23:49:01
- Gitでローカルを戻す前に|reset・restoreの違いと退避範囲 2026-10-15 23:49:01
- Git rebaseの使い方|対象範囲・競合解決・pushの判断 2026-10-15 22:50:59
- Git pullの使い方|取込み先・ff-only・競合とstashの注意点 2026-10-15 22:50:59
- Git pushの使い方|送信先・タグ・force-with-leaseの条件 2026-10-15 22:12:47
- Git remoteの設定・確認・削除|SSH URLとfetch/pushの違い 2026-10-15 22:12:47
- Gitリモートリポジトリの作成|初回push・既存履歴・mirrorの注意 2026-10-15 15:48:16
- Gitのuser.name・user.email設定|local/global・確認と過去履歴の注意 2026-10-15 15:30:07
- LinuxにGitをインストール|配布元・初期設定・TLSと認証の確認 2026-10-15 15:30:06
- Git導入と初回push|Linuxサーバー・Windows/macOS・SSH設定 2026-10-15 14:51:54
- Db2のCREATE INDEX|索引定義・INCLUDEと実行計画の確認 2026-10-15 14:10:22
- Db2の自動採番|IDENTITY・ID取得とRESTARTの注意点 2026-10-15 14:10:22
- 【DB2】特定スキーマの全テーブルの全カラム情報を取得する方法 2026-10-15 13:53:15
- Db2のシーケンスとIDENTITYの違い|採番とカタログの確認SQL 2026-10-15 13:53:15
- Db2で複数カラムをUPDATEする方法|SET・WHEREと更新前の値 2026-10-15 13:53:15