はじめに
こんにちは。Webサイトを作っていると、特に日本語のサイトでは「縦書きの文字を使いたい」という場面に出会うことがありますよね。
私も以前、和風のサイトを制作する際に、CSSで文字を縦書きにする方法を調べたことがありました。その時は思った以上に簡単にできることを知りました。
ここでは、CSSで文字の縦書きを実現する方法を、実際に使えるサンプルコードと共にまとめてみました。よければ、ご覧ください。
CSSの縦書き基本プロパティ
CSSで文字を縦書きにするには、writing-mode プロパティが中心となります。このプロパティは、文字の書字方向を制御する重要な役割を持っています。
writing-modeの主要な値
プロパティ値 | 効果 | 用途 |
---|---|---|
vertical-rl | 縦書きで右から左へ | 日本語の縦書き書籍スタイル |
vertical-lr | 縦書きで左から右へ | モンゴル語など特殊な用途 |
horizontal-tb | 横書きで上から下へ | 通常の横書き(デフォルト) |
基本的な縦書きテキスト
実行結果
text-orientationで文字の向きを調整
縦書きにした際、英数字や記号の向きが気になることがあります。そんな時に役立つのが text-orientation プロパティです。
text-orientationの値と効果
プロパティ値 | 効果 |
---|---|
mixed | 日本語は縦、英数字は横向き(デフォルト) |
upright | すべての文字を正立させる |
sideways | すべての文字を横倒しにする |
文字の向きを制御した縦書き
実行結果
ヒント
日本語サイトでは mixed
が自然に見えることが多いですが、デザインによっては upright
の方が統一感が出る場合もあります。実際のコンテンツで試してみることをおすすめします。
実用的な縦書きレイアウトサンプル
実際のWebサイトでよく使われる縦書きレイアウトのパターンをいくつかご紹介します。
見出しと本文の組み合わせ
和風サイトや文学系サイトでよく見かける、見出しと本文を組み合わせたレイアウトです。
見出しと本文の縦書きレイアウト
実行結果

フォントファミリーに游明朝を指定すると、より和風の雰囲気が出るんです。ブラウザによって表示が変わることもあるので、フォールバックも忘れずに設定しています。
ブラウザサポートと注意点
CSSの縦書き機能は、現在ほとんどのモダンブラウザでサポートされています。ただし、古いブラウザでは表示が崩れることがあるため、いくつか注意点があります。
主要ブラウザのサポート状況
ブラウザ | writing-mode | text-orientation | 備考 |
---|---|---|---|
Chrome | ✅ 全対応 | ✅ 全対応 | 安定動作 |
Firefox | ✅ 全対応 | ✅ 全対応 | 安定動作 |
Safari | ✅ 全対応 | ⚠️ 部分対応 | 一部制限あり |
Edge | ✅ 全対応 | ✅ 全対応 | 安定動作 |
注意点
Internet Explorer では縦書きのサポートが限定的です。また、モバイルブラウザでは表示が崩れることがあるため、レスポンシブ対応時は十分なテストが必要です。
レスポンシブ対応の考慮
スマートフォンなど小さな画面では、縦書きが読みにくくなることがあります。メディアクエリを使って、適切に切り替える方法をおすすめします。
/* デスクトップでは縦書き */.responsive-text { writing-mode: vertical-rl; height: 300px;}
/* モバイルでは横書きに切り替え */@media (max-width: 768px) { .responsive-text { writing-mode: horizontal-tb; height: auto; }}
よくある質問
縦書きテキストが崩れて表示される場合の対処法は?
まず、コンテナの高さが十分に設定されているか確認してください。また、フォントファミリーによっては縦書きに適さないものもあるため、日本語フォントを明示的に指定することをおすすめします。
英数字が横向きになって読みにくい場合は?
text-orientation: upright; を設定すると、英数字も縦向きになります。ただし、可読性を考慮して、長い英数字は避けるか、別途スタイリングを検討してください。
縦書きテキストをコピー&ペーストした時の動作は?
ブラウザによって動作が異なりますが、多くの場合、通常の横書きテキストとしてコピーされます。これはCSSの表示効果であり、テキスト内容自体は変わらないためです。
まとめ
CSSで文字を縦書きにする方法について、サンプルコードと共にご紹介しました。
writing-mode プロパティを使えば、比較的簡単に縦書きテキストを実現できます。日本語サイトでは特に、和風のデザインや文学的な表現に効果的だと思います。
ただし、レスポンシブ対応やブラウザサポートには注意が必要です。実際に導入する際は、ターゲットとするユーザー環境でしっかりとテストを行うことをおすすめします。
この記事が、CSS縦書きの実装の参考になれば嬉しいです。
公式リソース(Official Resources)
関連記事
初めて縦書きが表示された時は「おお!」って声が出ちゃいました!思っていたより簡単にできるんですよね。