CSSのtext-decorationは意外と色々なスタイル調整ができる
CSSのtext-decoration
って下線や打ち消し線を引くだけでなく、実は色々できたりします。あまり知られていないような気がしたのでまとめておきます。
普通に下線を引く場合
よく使うのは下線だったり、打ち消し線ですね。
.foo {
text-decoration: underline; /* 下線 */
}
.bar {
text-decoration: line-through; /* 打ち消し線 */
}
text-decoration-color
下線の色を変えるtext-decoration-color
を使うと、下線や打ち消し線の色が変えられます。IEは未対応ですがモダンブラウザでは全て対応しています。
.foo {
text-decoration: underline;
text-decoration-color: blue; /* 線の色 */
}
text-decoration-style
波線や二重線にする線のスタイルはtext-decoration-style
プロパティで波線や二重線、破線などに変えることができます。IE以外のモダンブラウザに対応。
↑ このようなイメージですね。
/*
* それぞれに
* text-decoration: underline;
* text-decoration-color: orange;
* を指定しています
**/
.underline-wavy {
text-decoration-style: wavy; /* 波線 */
}
.underline-double {
text-decoration-style: double; /* 二重線 */
}
.underline-dashed {
text-decoration-style: dashed; /* 破線 */
}
.underline-dotted {
text-decoration-style: dotted; /* 点線 */
}
border
プロパティを使っても二重線や破線などは実現できますが、テキストに対しての線の場合にはtext-decoration-style
を使った方がきれいに見えます。
overline
テキストの上に線をひく値text-decoration
の値にはoverline
というものがあり、これを指定するとテキストの上に線が引かれます。使う機会はほとんどないような気がしますが。
.foo {
text-decoration: overline; /* 上線 */
}
text-decoration-thickness
線の太さを変えるtext-decoration-thickness: 値
を指定すれば、線の太さを変えることが可能です。caniuseを見るとChrome87〜対応と書いてあるのですが、自分の環境だとChrome87でもなぜか効きませんでした。Safari、FireFoxでは問題なく対応。
.foo {
text-decoration: underline;
text-decoration-color: silver;
text-decoration-thickness: 3px; /* 線の太さ */
}
text-decoration-skip-ink
下線と文字の重なり方を決めるtext-decoration-skip-ink: none;
を指定すると、下線と文字列が重なる部分であっても下線が途切れることがなくなります。
↑ 上がデフォルト(auto
)で、下はnone
を指定した場合です。下の方は下線が途切れることなく伸びていることが分かります。
.text-skip-all {
text-decoration: underline;
text-decoration-skip-ink: none;
}
2022年9月現在、すべてのモダンブラウザで使用できます。
text-underline-offset
線と文字列との距離を決めるtext-underline-offset: 値
という形で線と文字列の離れ具合を決めることができます。
たとえば15px
を指定すると以下のように線と文字列の間に大きな隙間ができます。
.underline-spaced {
text-decoration: underline;
text-underline-offset: 15px;
}
値にはem
やrem
、%
などの単位で値を指定することもできます。Chrome87〜、Safari、Firefoxに対応。最新の情報はtext-underline-offset - caniuseをどうぞ。
以上text-decoration
に関する豆知識のまとめでした。より詳しく知りたい方は[MDNのtext-decorationの解説]を読むのがおすすめです。
Discussion