piapia123
ja

CSS 縦書き

スタイル

処理はすべてブラウザ内で完結します。データは送信されません

プレビュー上のパラメーターを変えると即座に反映されます
CSS

縦書きは CSS では 3 つのプロパティで済みますが、そのどれにも落とし穴があります。 · `writing-mode` —— 文字を上から下へ流し、列は右から左へ進めます。`vertical-lr` は列が左から右へ進む書き方で、これはモンゴル文字の慣習です。中国語の伝統は `vertical-rl` です · `text-orientation` —— 数字とラテン文字を「横倒し」(`mixed`)にするか「正立」(`upright`)にするかを決めます。中国語の縦書きでは `2026` のような数字は横倒しが最も読みやすく、既定は `mixed` です · `height` —— 縦書きは高さが必須です。なければ 1 列が伸び続け、折り返しが起きません 最後の 1 つが見落とされがちです。高さがないと、延々と下へ伸びる 1 列を見ることになり、ツールが壊れたと思ってしまいます。そこで高さを明示的なパラメーターにしています。 出力は 1 つの CSS ルール(セレクタは `.vertical-text`)で、見出しや本文のコンテナに貼るだけです。

機能

  • `writing-mode` による縦書き。列は右から左、または左から右
  • `text-orientation` で数字とラテン文字の向きを選択
  • 文字サイズ・列間隔・コンテナの高さを調整でき、プレビューが即座に追随
  • 高さが列の折り返し位置を決める(最も忘れられやすい項目)
  • 列間隔は 6 段階の固定倍率。「1.8 と 2 のどちらが良いか」で悩まなくて済む
  • 出力は 1 つの CSS ルールのみ。セレクタは `.vertical-text`
  • プレビューを確認してからコピー
  • 処理はすべてブラウザ内で完結し、入力した文字は送信されません

使い方

  1. 上の入力欄に文字を入力します
  2. 列の進む向きと数字の向きを選びます
  3. 文字サイズと高さを動かし、どこで折り返すか・1 画面に何列入るかを確認します
  4. 納得したら CSS をコピーします

よくある質問

文字が下へ伸びるだけで折り返さないのはなぜですか?
高さを指定していないためです。縦書きの折り返しはコンテナの高さを使い切ったときに起きます。`height: auto`(あるいは高さのない親要素いっぱい)では列が永遠に尽きず、文字は無限に下へ伸びます。上の「コンテナの高さ」がそのための項目で、指定すれば複数列に折り返すのが確認できます。実際のプロジェクトでも同じで、縦書きのコンテナには確定した高さが必要です。でなければ貼った CSS はやはり「1 本の線」になります。
数字が横倒しになっています。正立にできますか?
できます。「数字と英字の向き」を正立(`text-orientation: upright`)に切り替えてください。それぞれ適した場面があります。横倒し(`mixed`)は読みやすく、数字や英単語はもともと横組みのものなので `2026-09-27` も一目で分かります。正立は整然としており、1 文字ずつ枡に収まるので縦書きの番号や扁額風の組み方に向きます。中国語の縦書きでは横倒しが一般的です。
出力が HTML ではなく CSS なのはなぜですか?
縦書きは見た目の問題であって構造の問題ではないからです。`<br>` で 1 文字ずつ改行すればそれらしく見えますが、テキストが分解されてしまいます。選択してコピーすると 1 行に 1 文字になり、検索や読み上げも壊れます。`writing-mode` ならブラウザが描画時に方向を扱うため、テキストはそのまま —— コピーでき、検索でき、スクリーンリーダーも正常に読めます。

関連ツール