プログラミング

CSSでテキストを縦書きデザインにする方法

Webサイトでは基本的にテキストは横書きですが、CSSだけで縦書きにすることもできます。

日本の本などは元々縦書きですし、テキストを縦書きにすることで和風デザインを演出できるなど、Webデザインの幅も広がります。

ただ単に縦書きにすればいいというわけでもなく、日本語や英語、数字などの向きなども調整する必要があります。

テキストを縦書きにする

まず、CSSでテキストを縦書きするには「writing-mode」というプロパティを使うのですが、以下のような指定ができます。

horizontal-tb 横書きで上から下へ
vertical-rl 縦書きで右から左へ
vertical-lr 縦書きで左から右へ

verticalが縦書きで、rlは右から左(Right to Left)、lrは左から右(Left to Right)という意味で覚えておけばOKです。

実際に縦書きを実装したのが以下の例です。

See the Pen
css 縦書き
by KUBO (@KUBOGEN)
on CodePen.

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

IE用に「-ms-」というベンダープレフィックスをつけた記述も必要です。

文字の表示方向を指定する

次に文字の表示方向について。先ほどの例だと縦書きにはなっていますが、文字の方向は横向きのものもあれば、縦向きのものがあります。

基本的には日本語は縦で、英数字は横向きになっていますが、それらの文字の表示方向は、「text-orientation」プロパティを使って指定することが可能です。(ただし、IEでは未対応のプロパティです。)

指定できるのは以下の通り。

mixed デフォルト。日本語は縦、英数字は横。
upright 日本語も英数字も縦
sideways 日本語も英数字も横

mixedがデフォルトの値で、日本語は縦、英数字は横向きで表示されます。uprightを指定すると、日本語も英数字も縦向きになり、sidewaysを指定すると、日本語も英数字も横向きになります。

実際に指定したのが以下の例です。

See the Pen
YzWLqOG
by KUBO (@KUBOGEN)
on CodePen.

.mixed {
 text-orientation: mixed;
 -webkit-text-orientation: mixed;
}
.upright {
 text-orientation: upright;
 -webkit-text-orientation: upright;
}
.sideways {
 text-orientation: sideways;
 -webkit-text-orientation: sideways;
}

残念ながらIEには対応していませんが、Safari用に「-webkit-」のベンダープレフィックスは指定しておきましょう。

英数字の向き

最後に英数字の向きについてです。「text-combine-upright」プロパティを使うことで、2文字の数字を1文字分の幅として縦向きに表示することが可能です。

See the Pen
text-combine
by KUBO (@KUBOGEN)
on CodePen.

HTML
<span class=”text-combine”>12</span>月<span class=”text-combine red”>31</span>
CSS
.text-combine {
 text-combine-upright: all;
 -webkit-text-combine: horizontal;
 -ms-text-combine-horizontal: all;
}

1文字分として表示したい部分をspanタグなどで囲って、「text-combine-upright」を実装すればいいのですが、ブラウザによって記述方法が違うので注意してください。

通常 text-combine-upright: all;
Safari -webkit-text-combine: horizontal;
IE -ms-text-combine-horizontal: all;

まとめ

CSSでテキストを縦書きにするには、writing-modeを使い、text-orientationやtext-combine-uprightなどで文字の表示方向を調整します。

ただ、ブラウザによってプロパティが対応していなかったり、記述方法が違うかったりするので、縦書きデザインをCSSで実装する場合は、そのあたりに注意しながら実装する必要がありそうです。

使用プロパティ
writing-mode

Leave a Comment