Menu

HTML の下線と取り消し線: u、ins、s、del タグ

HTML で文字に下線を引くには <u> か CSS の text-decoration を、取り消し線を引くには <s> か <del> を使います。各タグの意味、<ins> と <del> で編集を示す方法、リンクでないテキストに下線を引くと読み手が混乱する理由を解説します。

このページのコードはエディタで実行できます - 編集してすぐに結果を確認できます。

HTML で文字に下線を引く方法

方法は 2 つあります。<u> タグか、CSS の text-decoration: underline プロパティです。どちらも同じ線を引きます。

下線の問題は 3 行目にあります。読み手は下線のあるテキストをリンクだと思ってクリックします。普通のテキストに下線を引くのは、はっきりした理由があるときだけにしましょう。

u タグの意味

<u> は汎用の「下線」ボタンではありません。現在の HTML では、言葉にされていない注釈の付いたテキストを表します。「ここに何か特別なことがある」と示しつつ、それが何かは言わない印です。実際によく使われるのは次の場面です。

  • 綴りの誤りを示す (ワープロのように、赤い波線で示すことが多い)。
  • 中国語の文中の固有名詞を示す (中国語での組版の慣習)。

強調には <em> か <strong> を (太字 を参照)、本のタイトルには <cite> を使います。見た目だけがほしいなら CSS を使いましょう。

取り消し線: s と del

HTML にはテキストの上に線を引くタグが 2 つあり、意味が異なります。

タグ意味主な用途
<s>もう正しくない、関係ないが、文脈のために残す古い価格、売り切れのチケットの種類
<del>文書から削除された編集、変更履歴、ToDo リストの完了項目

ins と del で編集を示す

<ins> は <del> の相方で、追加されたテキストを示します。ブラウザは初期状態で下線を引きます。どちらも datetime (変更した日時) と cite (説明のある URL) を受け付けます。

この赤と緑のスタイルは、差分 (diff) でおなじみの見た目です。ins に text-decoration: none を指定して初期の下線を消し、リンクに見えないようにしています。

CSS で下線と取り消し線を引く

text-decoration はどの要素でも見た目の部分を担当します。色とスタイルを指定でき、text-decoration-thickness で太さを決めます。純粋に装飾のための線なら、これが適した方法です。

リンクの下線を消す方法、下線の位置、その他の text-decoration の詳細は CSS の下線 のページで解説しています。

アクセシビリティ

<s>、<del>、<ins> へのスクリーンリーダーの対応はまちまちです。削除や挿入として読み上げるものもありますが、多くは普通のテキストとして読むので、聞き手には「価格 49 ドル 29 ドル」と聞こえ、どちらが現在の価格かわかりません。違いが重要なら、言葉でも伝えましょう。たとえば画面には表示せず読み上げだけされるテキストを使うか、単純に「通常 49 ドル、現在 29 ドル」と書きます。

よくある間違い

  • リンクでないテキストに下線を引く。 読み手がクリックしようとします。目立たせるなら太字、色、背景を使いましょう。
  • 強調のために <u> を使う。 <em> か <strong> を使いましょう。
  • <strike> を使う。 廃止されています。<s>、<del>、text-decoration: line-through を使いましょう。
  • 文書の履歴で削除した内容に <s> を使う。 それは <del> の役割で、いつ削除したかも記録できます。
  • 線だけで意味を伝える。 多くのスクリーンリーダーは線を読み上げません。

よくある質問

HTML で文字に下線を引くには?

<u> で囲むか、CSS で text-decoration: underline を指定します。<u> は綴りの誤りを示すなど固有の意味があるときだけ使い、見た目だけの下線なら <span> や要素自体に CSS を指定します。

HTML で取り消し線を引くには?

古い価格のようにもう正しくないテキストには <s> を、編集で削除されたテキストには <del> を使います。どちらもテキストの上に線を引きます。CSS では text-decoration: line-through で同じ見た目になります。

<u> タグは非推奨ですか?

いいえ。<u> は HTML 4 で非推奨になりましたが、HTML5 で新しい意味を持って復活しました。綴りの誤りや中国語の文中の固有名詞など、文字以外の注釈が付いたテキストを表します。有効なタグですが、適した場面はまれです。

<strike> タグはどうなりましたか?

<strike> は廃止されています。ブラウザは今でも取り消し線を表示しますが、正しい HTML ではありません。意味に応じて <s> か <del> を使うか、text-decoration: line-through を使いましょう。

<s> と <del> の違いは何ですか?

<s> は、打ち消した価格のように、もう関係ないか正しくないものの文脈のために残すテキストを示します。<del> は文書から削除されたテキストを示し、置き換えた内容を示す <ins> と並べることが多く、datetime と cite 属性を付けられます。

Coddy programming languages illustration

Coddyでコードを学ぼう

始める