CSSグラデーションを使った太くならないリンクの下線は、Mediumの詳細な記事やterkel.jpのその解説とも言える記事を見てそのうちやってみようと思っていた。フォントサイズが大きい時に下線が2px
や場合によっては4px
くらいで引かれるようになるのは見た目に結構な負荷を与えるので、常に1px
で引きたいといった希望を持ってる人は多いはずだ。
このウェブサイトでは以下の要件を満たすような感じで実装した。
1px
で下線を引くa {
background-image: linear-gradient(
transparent 0,
transparent 50%,
rgb(91, 172, 208) 50%
);
background-position: 0 1.1em;
background-repeat: repeat-x;
background-size: 2px 2px;
text-decoration: none;
}
1px
の下線にするには2px
の背景画像の半分だけ塗るCSSグラデーションを作る。メディア・クエリーで分岐する必要はない(と思う)。下線の位置はフォント・サイズに合わせて可変になるようにem
単位を使って指定した。フォントとそのグリフの高さで多少のずれが起こるので要調整だが、だいたい1.05から1.15emだと思われる。
この記事を書いた時点では、上記スタイルに加えてcolor
をinherit
にしているので、下線のみ色が変わる。この形だと読みやすさそのものは向上するが、リンクの視認性はかなり下がるような印象も持った。text-decoration-color
プロパティーでも同じことが言えると思うので、このプロパティーが気軽に使えるようになってもこういった点には注意を払った方が良いだろう。
CSSグラデーションを使うのは、フォントサイズが大きくなるにつれて下線が太くなるというtext-decoration-*
プロパティーでは解決できない点への解だ。下線の太さはその色の印象を強めるということにもつながるので、倍の太さになると倍以上の印象をあたえると考えた方が良い。
下線が太くなるのはフォントに依存するが、概ね24px
前後で太くなる。昨今は24px
どころか40px
かそれ以上の大きさで文字を表示することもあるので、そういったサイズにtext-decoration
プロパティーで下線を引いている場合は、こういったテクニックを利用して下線の、延いてはリンク全体の印象を和らげる必要もあるだろう。