Menu

CSS で下線を引く: text-decoration、色、位置、消し方

text-decoration でテキストに下線を引き、その線の色、種類、太さ、テキストからの距離を調整します。リンクの下線を消す方法と、消すべきでない場面も解説します。

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

CSS で下線を引く方法

text-decoration: underline はテキストの下に線を引きます。色を指定しなければ、線は文字色になります。

2 行目は text-decoration のショートハンドで線の位置、種類、色を指定し、太さと位置は専用のプロパティで指定しています。仕様ではショートハンドの中に太さを書くこともできますが、Safari は太さを含めると宣言全体を捨てるので、text-decoration-thickness は別に書きましょう。

text-decoration のプロパティ

プロパティ値初期値
text-decoration-lineunderline, overline, line-through, none (組み合わせ可)none
text-decoration-stylesolid, double, dotted, dashed, wavysolid
text-decoration-color任意の色currentColor (文字色)
text-decoration-thickness長さ、パーセント、auto、from-fontauto
text-underline-offset長さ、パーセント、autoauto

text-decoration は最初の 4 つのショートハンドですが、太さは入れないでください。Safari は太さを含む text-decoration の宣言を無視します。text-underline-offset は別のプロパティなので、単独で書く必要があります。

線の種類、色、太さ

下線の位置を動かす: text-underline-offset

初期状態では線は文字のすぐ近くにあり、g、p、y などのディセンダー (ベースラインより下に出る部分) を避けて途切れます。text-underline-offset で線をさらに下げると、見出しやリンクがすっきり見えることがよくあります:

ディセンダーの周りの切れ目は、初期状態で有効な text-decoration-skip-ink: auto によるものです。途切れない線にするには none を指定します。

リンクの下線を消す

リンクにはブラウザのスタイルシートで下線が付いています。text-decoration: none で消せます。多くの読み手は下線でリンクを見つけるので、ホバーとキーボードフォーカスのときに下線を戻し、リンクには本文と違う色を付けましょう:

ナビゲーションバーやボタンは下線を消してもよい場所です。位置そのものが「リンク」であることを示しているからです。文章の段落の中では下線を残しましょう。リンクの状態については hover のページ で詳しく解説しています。

上線と取り消し線

text-decoration-line はテキストの上や中央にも線を引けて、複数の値を指定できます:

.old-price { text-decoration: line-through; }
.both      { text-decoration-line: underline overline; }

CSS の取り消し線は見た目だけです。削除された内容 (変更された価格、取り除かれた項目) なら、HTML の下線のページ のように <s> や <del> でマークアップし、意味をスタイルだけでなくマークアップにも持たせましょう。

よくある間違い

  • 見た目のために <u> で下線を引く。 <u> はスペルミスのように、ほかと異なると印を付けたテキスト用です。デザインとしての下線には CSS を使いましょう。
  • リンクではないテキストに下線を引く。 読み手はクリックしようとします。強調には太字、色、背景を使いましょう。
  • 本文中のリンクの下線を、ほかの手がかりなしで消す。 違いが見えない読み手には、色だけでは足りません。
  • 親の下線を子要素から消そうとする。 内側からは取り消せません。親を変えるか、子要素を inline-block にしましょう。
  • text-underline-offset をショートハンドに入れられると思う。 独立したプロパティです。
  • ショートハンドに太さを入れる。 text-decoration: underline 2px は Chrome と Firefox では動きますが、Safari は宣言全体を捨てます。text-decoration-thickness を使いましょう。

よくある質問

CSS でテキストに下線を引くには?

要素に text-decoration: underline; を指定します。線の見た目は text-decoration-color、text-decoration-style、text-decoration-thickness、text-underline-offset で調整します。

リンクの下線を消すには?

a 要素に text-decoration: none; を指定します。多くの読み手は下線でリンクを見つけるので、別の方法でリンクが目立つようにしましょう (色を変え、ホバーやフォーカスのときに下線を出すなど)。

下線の色を変えるには?

text-decoration-color か、ショートハンドを使います: text-decoration: underline #f59e0b;。指定しなければ、線は文字色になります。

テキストと下線の間を空けるには?

text-underline-offset を使います。例: text-underline-offset: 4px;。値を大きくするほど、線がテキストから離れて下がります。

子要素の下線を消せないのはなぜですか?

親が引いた下線は子要素をまたいで描かれ、子要素の中からは消せません。下線を指定している要素で消すか、子要素を display: inline-block にしましょう。親の装飾は inline-block には届きません。

Coddy programming languages illustration

Coddyでコードを学ぼう

始める