• HOME > 
  • CSS > 
  • CSSでテキストを縦書きにする方法【writing-mode...

CSSでテキストを縦書きにする方法【writing-mode】

投稿日:

このページにはGoogleアドセンス広告とアフィリエイト広告が含まれています。

カテゴリー記事のアイキャッチ画像
広告
広告

縦書きにできる?

WEBサイトは横書きしかできないものと思っていませんか?

実はCSSで指定すれば、縦書き表示に切り替えることができます。

縦書きを使うメリット

ページ内のアクセントになる

横書きが基本のWEBサイトの中で、縦書きのテキストはとても目を引きます。

キーワードやキャッチコピーなど、あえて縦書きで表記することで読者に強く印象付けることが可能です。

ただし多用しすぎると読みづらくなるので注意が必要です。実際に縦書きを見かけないのは、上から下へスクロールして読み進めるWEBサイトには横書きの方が適しているからです。

和の雰囲気を出せる

同じ日本語でも縦書きで表記するだけで、日本っぽさや和風っぽさが増します。

和風のテイストのサイトを作る際は、画像やデザインだけでなくテキストも縦書きに変更することで、より一層和の雰囲気を高めることができます。

CSSの記述方法

CSSで縦書き表示のために使用するのは、縦書きと横書きを切り替え「writing-mode」プロパティ、英数字の表示を制御する「text-orientation」プロパティと「text-combine-upright」プロパティです。

また、縦書きに切り替えるとtext-alignプロパティなどの挙動が変わるので注意が必要です。

まずはwriting-modeで縦書きに切り替えます。

writing-modeの使い方

writing-modeプロパティを使うとテキストの横書きと縦書きを変更できます。

CSS

.sample{
	writing-mode:vertical-rl;
	-ms-writing-mode:tb-rl;
}

HTML

<div class="sample">
<h2>縦書きsample20XX年1月18日</h2>
<p>ダミーテキストダミーテキストダミーテキストダミーテキストダミーテキストダミーテキストダミーテキストダミーテキストダミーテキスト</p>
</div>

プレビュー

writing-modeの表示例

writing-modeの値は3種類

vertical-rl縦書き(右から左)
vertical-lr縦書き(左から右)
horizonal-tb横書き

値の「rl」はrightとleftの頭文字です(lrはleftとright)。また、「tb」はtopとbottomの頭文字で上から下へ記述されることを意味します。

ちなみにverticalは「垂直」、horizonalは「水平」という意味です。

writing-modeにはIE用のベンダープレフィックスが必要

5行目の「-ms-」から始まる箇所は、インターネットエクスプローラーのためのベンダープレフィックスです。

インターネットエクスプローラーで縦書き表示にするためには、前述のものとは異なる値の記述が必要です。

tb-rl縦書き(右から左)
tb-lr縦書き(左から右)
lr-tb横書き
リンク先のサムネイル
CSSのベンダープレフィックスとは?【初心者にもわかりやすく解説】

ベンダープレフィックスをプロパティの接頭辞として付与して記述することで、各ブラウザのベンダー(開発元)が開発した拡張機能のCSSを先行実装できるようになります。べンダープレフィックスにはブラウザごとの接頭辞が存在します。使用する時はプロパティ名の前にハイフォンをつけて記述します。  ...【もっと読む】

text-orientationの使い方

先程の表示例を見ると、縦書きの中で英数字だけ横向きになってしまっています。

writing-modeの表示例

縦書き時の英数字の表示方向は、text-orientationで指定する必要があります。

CSS

.sample{
	-省略-
	text-orientation:upright;
	-webkit-text-orientation:upright;
}

HTML

<div class="sample">
<h2>縦書きsample20XX年1月18日</h2>
<p>ダミーテキストダミーテキストダミーテキストダミーテキストダミーテキストダミーテキストダミーテキストダミーテキストダミーテキスト</p>
</div>

プレビュー

text-orientationの表示例

text-orientationにも3種類の値が存在する。

mixed日本語は縦向き、英数字は横向きmixedの表示例
upright日本語も英数字も縦向きuprightの表示例
sideways日本語も英数字も横向きsidewaysの表示例

text-combine-uprightの使い方

英数字の縦向きへの変更はできましたが、日付の部分など2桁以上の数字の表示が読みづらいです。

text-orientationの表示例

日付や住所など2桁以上の数字を一文字分の幅で横に記述するには、text-combine-uprightプロパティを使用します。

下記のように変更したい部分をspanタグで囲んで指定します。

CSS

	-省略-
.sample h2 span{
	text-combine-upright:all;
	-webkit-text-combine:horizonal;
	-ms-text-combine-horizonal:all;
}

HTML

<div class="sample">
<h2>縦書き<span>sample</span><span>20XX</span>年<span>1</span>月<span>18</span>日</h2>
<p>ダミーテキストダミーテキストダミーテキストダミーテキストダミーテキストダミーテキストダミーテキストダミーテキストダミーテキスト</p>
</div>

プレビュー

text-combine-uprightの表示例

text-combine-uprightにはベンダープレフィックスが必要

ブラウザごとに記述の仕方が大きくことなるので注意が必要です。

通常text-combine-upright:all;
Chrome / Safari-webkit-text-combine:horizonal;
IE-ms-text-combine-horizonal:all;

※表示例の「sample」の部分のように文字数が多い場合はフォントサイズが小さいと圧縮されてつぶれてしまうので注意が必要です。

文字揃えの方法

縦書きの状態では、文字揃えの挙動が通常と異なります。

text-alignをwriting-modeと同じ要素に指定すると上下揃えになる

writing-modeで縦書きに変更した要素は、元の状態から90度傾けてある状態であるため、text-alignによる文字揃えの方向も変更されてしまいます。

そのため、右寄せするために下記のように記述すると

CSS

.sample{
writing-mode:vertical-rl;
-webkit-writing-mode:vertical-rl;
-ms-writing-mode:tb-rl;
text-align:right;
} 

HTML

<div class="sample">
<h2>縦書きsample20XX年1月18日</h2>
<p>ダミーテキストダミーテキストダミーテキストダミーテキストダミーテキストダミーテキストダミーテキストダミーテキストダミーテキスト</p>
</div>

縦書きテキストは下揃えされます。

プレビュー

text-alignをwriting-modeと同じ要素に指定

反対に、writing-modeと同じ要素にtext-align:leftを指定すると上寄せ、centerを指定した場合は垂直方向で中央寄せされます。

では右寄せするにはどのようにすれば良いでしょうか?

writing-mode要素をinline-blockにしたうえで、囲んだ要素にtext-alignを指定する

縦書きテキストをひとまとまりのインラインブロックとすることで、水平方向に揃えることができます。

CSS

.wrap{
text-align:right;
}
.sample{
writing-mode:vertical-rl;
-webkit-writing-mode:vertical-rl;
-ms-writing-mode:tb-rl;
text-align:left;
display:inline-block;
} 

HTML

<div class="sample">
<h2>縦書きsample20XX年1月18日</h2>
<p>ダミーテキストダミーテキストダミーテキストダミーテキストダミーテキストダミーテキストダミーテキストダミーテキストダミーテキスト</p>
</div>

プレビュー

囲んだ要素にtext-alignを指定した表示例

縦書き時の他のプロパティの挙動

paddingやmargin、borderなどの上下左右の指定は、縦書きにした状態でも目で見たとおりに指定できます。

ルビを付けたときの表示

rubyタグによるルビ(ふりがな)表示も、writing-mode内であれば自動で縦書きに変更されます。

リンク先のサムネイル
HTMLで文字にルビを振る(ふりがなを付ける)方法

rubyタグとrtタグを使えばルビを振る(ふりがなを付ける)ことが可能です。ルビを振りたい単語をrubyタグで囲み、ルビの部分をrtタグで囲みます。...【もっと読む】

HTML

<p>日本語の<ruby>縦<rt>たて</rt>書<rt>が</rt></ruby>きテキスト</p>

プレビュー

ルビを付けたときの表示

リストの縦書き表示

ulとliタグによるリスト(箇条書き)表示も、writing-mode内であれば自動で縦書きになります。

HTML

<ul>
<li>リスト表示したときの例</li>
<li>リスト表示したときの例</li>
</ul>

プレビュー

リストの縦書き表示例

まとめ

縦書きへの変更自体は簡単に実現できますが、記載した内容以外にも実際にレイアウトに組み込んでみるとわかりますが、他の要素との兼ね合いやレスポンシブ化など細かい調整が必要だったりします。

WEBサイト制作においては、いろいろな部分で横書き前提で作られていますので、縦書きを不備なく組み込むのには苦労が伴います。

関連する記事

サムネイル

CSSでテーブルの先頭行や先頭列を固定する方法【sticky……

2024年04月12日
CSSのpositionプロパティの「sticky」を使えば、CSSだけでテーブルの行も列も簡単に固定することができるのでご紹介します。情報量の多い表を作る場合は、スクロールした時に項目名などの行や列は固定させておいたほうが見やすくなります。
サムネイル

CSSのwhite-spaceプロパティの使い方【半角スペー……

2024年03月07日
SSのwhite-spaceは、テキストにおける半角スペース・改行・タブの扱いと折り返しの有無を設定するプロパティです。
サムネイル

CSSのメディアクエリでスマホでのホバーの挙動の対策を行う【……

2023年10月01日
最終更新日:2023年09月28日
要素をタップしたときにホバー時のスタイルが適用され続けるという経験はありませんか?CSSだけで簡単にスマホでの疑似要素「hover」の挙動の対策を行う方法をご紹介します。
サムネイル

CSSの疑似クラス「:focus」の使い方【focus-wi……

2023年05月01日
最終更新日:2023年05月31日
CSSでは疑似クラスである「:focus」を用いることで、フォーカス時のスタイルを設定することが可能です。一方「:focus-within」は、その要素自体もしくは子要素にフォーカスがある状態で有効になります。
サムネイル

CSSのclamp()・max()・min()の使い方【プロ……

2023年01月16日
最終更新日:2023年03月10日
clamp()・max()・min()はCSSのプロパティの値の指定に利用できる比較関数です。複数の値を比較し1つの値を導きだし上限や下限を設定できます。
サムネイル

CSSのfont-feature-settingsの使い方【……

2023年01月16日
最終更新日:2023年03月10日
font-feature-settingsは、文字本来のサイズに応じてフォントの文字詰め(カーニング)を設定するためのプロパティです。
サムネイル

CSSのletter-spacingで文字間隔を設定【中央寄……

2023年01月16日
最終更新日:2023年03月10日
letter-spacingは、テキストの文字と文字との間隔を設定するためのプロパティです。文字と文字の間を狭めたり、広げたりしてバランスを整えることができます。