1.

HTML title属性の使い方と限界(abbr / a / アクセシビリティ / aria-label との違い)

編集
この記事の要点
  • title 属性はほぼ全ての HTML 要素に付けられるグローバル属性。多くのブラウザでマウスホバー時にツールチップを表示
  • "ホバー時にしか出ない"のでタッチデバイスでは見えない、キーボード操作でも到達できないことが多い → 重要情報を入れてはいけない
  • スクリーンリーダーの読み上げは実装依存 → アクセシビリティが必要なら aria-label / aria-describedby / 可視テキストを使う
  • HTML のような略語展開が代表的用途
  • カスタムツールチップは CSS の :hover + ::after、または popover 属性 (2024〜) で作る

title 属性とは

title はほぼ全ての HTML 要素に付けられるグローバル属性です。ブラウザは多くの場合、その要素にマウスポインタを乗せたとき小さなツールチップ(黄色や黒の小さな吹き出し)でその文字列を表示します。


HTML


policy








表示されるタイミング

環境挙動
デスクトップ(マウス)ホバー後 1〜2 秒で表示
キーボードフォーカス多くのブラウザで表示されない(Tab で来ても出ない)
スマホ・タブレット長押しで表示されることがある(実装依存)
スクリーンリーダー読まれることもあるが設定依存。NVDA は既定で読まない
iframe支援技術向けに必須とされる

SEO とアクセシビリティ

SEO 観点

Google は title 属性をランキング要因として強く扱わないと公表しています。alt 属性のように画像の文脈把握には使われませんし、`` の文字列がアンカーテキストの代替になることもありません。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追加の説明無し名前の後に読まれる
可視テキスト本文・ラベルあり確実に伝わる

アイコンボタンの推奨パターン











abbr 要素での略語展開

title 属性が今でも明確に推奨されるのが 要素の略語展開です:

本サイトは HTMLCSSJS で書かれています。

W3C は標準化団体。

後続では W3C はそのまま書ける。

CSS で点線下線を出して「ホバーで意味が出る」サインを視覚化するブラウザもあります:

abbr[title] {
  text-decoration: underline dotted;
  cursor: help;
}

CSS のみのカスタムツールチップ

title 属性のスタイルは制御できないため、独自ツールチップを作ることが多いです:



新しい popover 属性 (2024〜)

2024 年からは HTML 標準の popover 属性で、よりアクセシブルなツールチップが書けます:


このボタンはヘルプを開きます

よくあるアンチパターン

  • 長文を title に入れる → ツールチップが画面外にはみ出る・スクリーンリーダーが途中で切る
  • リンクテキストと同じ文字列 → 冗長で読み上げが二重になる
  • img の alt 代わりに title → alt が空のままだとスクリーンリーダーが画像を読まない
  • 必須情報を title だけに → タッチ・キーボードユーザーに伝わらない

FAQ

Q: imgalttitle の違いは?
A: alt は画像が表示できないときの代替テキスト(必須)。title はホバーでの補足(任意)。両方付けるなら違う内容にする。

Q: iframe に title は必要?
A: 必須に近い扱いです。スクリーンリーダー利用者が iframe の中身を予測できる説明を必ず入れてください。

Q: title="" 空文字を入れるのは?
A: 親要素の title を打ち消す用途で使えますが、通常は属性ごと付けない方が良い。

編集
Post Share
子ページ

子ページはありません

同階層のページ

同階層のページはありません

最近更新/作成されたページ