CSSで文字を縦書きにする方法

CSSで文字を縦書きにする方法

何も指定しなければ、HTMLで記述した文字列は横書きになります。和風のサイトなどでは、文字を縦書きにしたい時もあるかと思います。

画像を使うという方法もありますが、今回はCSSを使って文字を縦書きにする方法をご紹介したいと思います。

CSSで文字を縦書きにする方法

文字を縦書きにするには、writing-modeプロパティを使います。

以下のように指定すれば、p要素が縦書きになります。


p {
  -ms-writing-mode: tb-rl;
  writing-mode: vertical-rl;
}

逆に以下のように指定すれば、文字は横書きになります。


p {
  -ms-writing-mode: lr-tb;
  writing-mode: horizontal-tb;
}

横書きの場合は通常は指定する必要はありませんが、PCでは縦書きで、スマホだけ横書きに戻したい場合などに指定します。

文字の向きを変更する

writing-modeプロパティを使って、文字を縦書きにすることができますが、そのままだと英数字の向きが横に倒れてしまいます。

CSSによる縦書き

text-orientationプロパティを使うことで、文字の向きを調整できます。以下のように指定すると、英数字も縦向きに表示されます。


p {
  -ms-writing-mode: tb-rl;
  writing-mode: vertical-rl;
  text-orientation: upright;
}

text-orientation: upright;

text-orientationで指定できる値は、以下の通りです。デフォルトはmixedです。

mixed 英数字は右に90度回転して表示
upright 英数字を縦向きに表示
sideways すべての文字を右に90度回転して表示

英数字や記号を縦中横にする

複数の英数字や記号を1文字分として扱う「縦中横」も実現可能です。

CSSで縦中横

このように、02と14だけが横方向に表示される縦中横を実現するには、text-combine-uprightプロパティを使います。

まずHTML側では、縦中横にしたい部分をspan要素で内包します。

<p><span class="vertical-mid">02</span>丁目<span class="vertical-mid">14</span>番地</p>

CSSでは、以下のように指定します。


.vertical-mid {
  -webkit-text-combine: horizontal;
  -ms-text-combine-horizontal: all;
  text-combine-upright: all;
}

-webkit-text-combineはsafari、-ms-text-combine-horizontalはIE用のプロパティです。

このように指定することで、縦中横が実装できます。

あとがき

CSSだけでも縦書きが実現できるようになりました。画像を使わなくて良いので、自由度が高まりますよね。

文字を縦書きにしたい時は、ぜひ参考にしてください。

この記事が気に入ったら
いいね!してね♪

Twitter で

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です