text-underline-position と text-underline-offset を試してみる
主にリンクの下線をスタイリングする text-decoration: underline
だが、最近この text-decoration
系が色々とスタイリングできるらしく、中でも面白いモノを見つけた。
text-decoration-color
による線の色だけ変更する技や、text-decoration-style
による border-style
チックな指定方法は知っていたが、text-underline-position
と text-underline-offset
というプロパティは今回初めて知った。下線の位置を詳細に調整できるプロパティだ。
- 参考 : text-underline-position - CSS: カスケーディングスタイルシート | MDN
- 参考 : text-underline-offset - CSS: カスケーディングスタイルシート | MDN
いずれも text-decoration: underline
にのみ作用し、overline
などには影響しない。
テキストに下線を引くと、アルファベットの g
や q
などベースラインの下を越える文字と重なった時に見づらくなることがある。そのため最近のブラウザは text-decoration-skip-ink
が auto
になり、下線が途切れるようなスタイリングに変わっていたりする。コレはコレで今までと見た目が変わってしまって慣れないのだが、今回見つけた text-underline-position
と text-underline-offset
はその問題を改善できるかもしれない。
以下のデモページで色々と検証しているので見てみてほしい。
- デモ : text-underline-offset
- コード : frontend-sandboxes/index.html at master · Neos21/frontend-sandboxes
text-underline-position
は、指定のキーワードによって位置を調整できるモノ。一方 text-underline-offset
は 5px
とか 0.3em
といったように、数値でオフセット位置を指定できる。
自分が試した限りだと、text-underline-offset
を 0.1em
~ 0.25em
くらいの間で調整すると、アルファベットの g
や q
などと程良く間隔が開いて見やすくなる。text-decoration-skip-ink: none;
を同時に指定して、下線が途切れないようにしておくと良いだろう。
ついでに検証してみたところ、text-underline-offset: -1.21em
あたりにすると、text-decoration: overline
と同じ位置に underline
を配置できる。意味はないけど。w
text-underline-position
と text-underline-offset
は併用もできて、text-underline-position: under
などでベース位置を決めたら、そこを起点に text-underline-offset
の分だけズラせる感じ。
地味なスタイリングだけど、より自然なテキストのスタイリングができるようになって良き良き。