2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

CSSで縁取り文字を表現する方法 2024最新版

Last updated at Posted at 2024-10-22

テキストの縁取りをCSSで表現しようとすると、軽くググった感じだと

  1. text-shadowを重ねまくる
  2. text-strokeで縁取りしたあと、before要素で同じテキストを描画する

の2通りの方法が現時点での最適解というような記事がヒットします。

しかし、上記の方法だとReactなどでSPAを実装する際にちょっと面倒だし、
やはりスタイルのためにごちゃごちゃやらなきゃいけない感じが気持ち悪かったですね。

現時点で、もっとスッキリした書き方を見つけました。
それが下記です。

CSSで縁取り文字を表現する

{
  -webkit-text-stroke: 2px black;
  text-stroke: 2px black;
  paint-order: stroke;
}

ポイントは paint-order です。
これを利用すると、テキストを描画するときの塗りつぶしと輪郭の順序を変更することができます。
つまり、輪郭線がテキストよりも後ろに描画されてくれるということです。
とってもシンプルで良い解決策だと思います。

サンプル

上記のスタイルで、ちょっと大げさに描画してみると下記のような感じになります。

about_blank.png

すこし課題があるとすれば、記号や漢字など一部の文字の縁取りがトゲトゲした印象になっているくらいでしょうか。
ただ、text-shadowで表現するにしても影のつき方には一癖あるとおもうので、トゲトゲが気になるならspanで囲んでoverflow: hiddenしてはみ出しすぎたトゲを隠したりするほうがいいかな、と思います。

ブラウザ対応状況

text-stroke
https://caniuse.com/?search=text-stroke

paint-order
https://caniuse.com/mdn-css_properties_paint-order

どちらもIE以外は最新版対応済みです。気兼ねなく使えますね!

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?