LoginSignup
2
3

More than 3 years have passed since last update.

縦書きCSSの世界

Posted at
1 / 23

概要

  • まずは文章で縦書きを表示
  • 縦書きCSSの基本
  • 要素・テキストの表示
  • まとめ
  • 参考

まずは文章で縦書きを表示


CODEPENで縦書き表示してみる

CODEPEN


マークアップとスタイル

3つ要素が必要

  • 縦書きになる要素(p)
  • 縦書き指定する親要素(div.v-writing)
  • 親要素をレイアウトする祖先要素(div.contents)

マークアップとスタイル

縦書きになる要素(p)

  • 縦書きにするためのスタイル指定なし

マークアップとスタイル

縦書き指定する親要素(div.v-writing)

  • writing-mode: vertical-rl; → 縦書き指定
  • display: inline-block; → 親要素のレイアウト用
  • text-align: left; → 親要素内の文字の揃え

マークアップとスタイル

親要素をレイアウトする祖先要素(div.contents)

  • text-align: center; → 親要素のレイアウト用

縦書きCSSの基本


3つの基本プロパティ

  • writing-mode
  • text-combine-upright
  • text-orientation

3つの基本プロパティ

writing-mode : ブロックのフロー方向(縦書き・横書き)を指定

  • 横書き(horizontal-tb, 初期値) / 縦書き(vertical-rl) 等
  • MDN

3つの基本プロパティ

text-combine-upright : 一文字分の空間に挿入する複数文字の組み合わせを指定

  • none(なにもしない, 初期値) / all(どんな文字でも縦中横) / digits ?(2〜4桁の数値を指定して縦中横, 未サポート)
  • Safariは効かない
  • MDN

3つの基本プロパティ

text-orientation : 行内のテキストの向き(縦書き・横書き)を指定

  • 横書き文字・縦書き文字を適切に処理(mixed, 初期値) / 縦書き(upright) / 横書き(sideways)
  • MDN

テキストのスタイリング

  • text-align
    • left(上) / center(上下中央) / right(下)
  • line-height
    • 行の高さ。縦方向→横方向

テキストのスタイリング

  • text-indent
    • 1行目のインデント。左からの空き→上からの空き
  • letter-spacing
    • 横方向→縦方向

ブロックのレイアウト

  • margin / padding / top / left / right / bottom の指定方向はそのまま
  • flexboxの位置指定もちゃんと効く

要素・テキストの表示


要素・テキストの表示

CODEPEN


要素の表示

  • sup(上付き文字) / sub(下付き文字)
    • normalize.cssを使うと文字が上下に重なるので注意
  • ruby(ルビ)
    • ルビテキストと本文テキストの隙間をChromeは調整できないので注意

要素の表示

  • 下線
    • デフォルトは左に表示。text-decorationで大まかに調整できる
  • リスト・テーブル
    • 左が起点→上が起点

特殊な文字

  • © ㈱ ③ Ⅵ などの機種依存文字はブラウザによって縦・横の表示が異なる可能性あり

まとめ

  • 縦書きCSSのためには 1. 縦書きにする要素 2. 1の親要素 3. 2をレイアウトする祖先要素 が必要
  • 全角文字は縦書きに変わるが、半角文字は変わらないので必要に応じてスタイリングする
  • テキストに反映するスタイルは方向が変わるが、ブロックのスタイルは方向が変わらない

参考

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3