超リンクの下線をもっときれいに見せる:text-underline-offset
# フロントエンドだいたい2016年ごろ、超リンクの下に下線を入れたいなら、通常は CSS に text-decoration: underline というプロパティを追加していた。
デフォルトでは下線が文字にかなり近く、こういう見た目を好まないデザイナーもいる。僕自身も、あまりきれいだとは思っていない。underline の位置や太さは調整できないので、その場合は通常 background-image で処理していた。
linear-gradient を使えば、underline に似た直線を擬似的に作れる。しかもこれは background-image なので、background-position で位置を調整できるし、background-size で太さも調整できる。
下線の位置を調整できない問題は解決できるものの、実際に使うとなると少し面倒に感じることも多いし、background-image 本来の使い方から少し外れている感じもある。もちろん使うこと自体はまったく問題ない。ただ、あまり直感的ではない。
text-underline-offset
この CSS プロパティはかなり前から提案されていたが、当時は対応ブラウザがかなり少なく、結局みんな background-image で下線の位置を調整していた。
今では主要ブラウザがすでにこのプロパティをサポートしており、使い方もとても直感的だ。
a {
text-decoration: underline;
text-underline-offset: 4px;
}
さらに下線の見た目を細かく制御したければ、text-decoration-thickness を組み合わせて太さを調整できる。
a {
text-decoration: underline;
text-decoration-color: #3b82f6;
text-decoration-thickness: 2px;
text-underline-offset: 3px;
}
以前の background-image を使うやり方に比べると、この書き方のほうが意味が明確で、保守もしやすい。
もともとは草案にすぎなかった標準が、各ブラウザにひとつずつ実装されていくのを見ると、本当に時代が進んでいるんだなという実感がある。
関連記事
- CSS field-sizing — 1行のCSSでフォーム要素を自動リサイズさせるtextarea の自動高さ調整は、以前は scrollHeight を監視する JavaScript が必要だった。CSS field-sizing: content なら1行で済む。textarea・input・select に対応。
- なぜウェブは Pixel Perfect を追求すべきではないのかPixel Perfect が本当に重要なときだけそれを気にすべきであり、そうでなければ往々にして双方にとって損な結果になる。
- CSS の HSL で色を書こう!(そしてより良い方法)Web開発において、従来の HEX や RGB の色表現は広く使われているものの、読みやすさや直感性に欠ける問題があり、P3 のような広色域では表現力にも限界がある。HSL(色相、彩度、明度)は、より直感的に色を定義できる方法であり、開発者が色を理解し調整しやすくしてくれる。HSL は色相・彩度・明度の3つの軸で色を表すため、特にデザインシステムにおいて、カラーパレットの明度変化をより自然に扱える。
- line-heightを1およびellipsisを設定しないようにしたい本文では、なぜウェブデザインにおいて line-height を 1 に設定することが推奨されないのか、また ellipsis を使用する際に直面する言語の問題について探ります。