LoginSignup
2
0

text-wrap: balance;試してみた

Last updated at Posted at 2023-12-16

これはなに

CSSの text-wrap プロパティは、テキストの折返しを制御します。
この text-wrap プロバティで、Chrome114以降で text-wrap: balance; がサポートされました。

日本語だけの場合、よしなに調整できることが多いですが、海外に向けた言語対応も行っているサービスの場合、このCSSプロパティが活躍するイメージが持てました。

この記事では、text-wrap: balance;の挙動を確かめてみたいと思います。

text-wrap: balance; とは

複数行のテキストがある場合、1行あたりの文字数を同じ文字数になるようにバランスを取ります。

デモ

See the Pen text-wrap: balance by gilly135 (@gilly135) on CodePen.

サポートブラウザ

2023年12月現在では、Can I useを見ると、Safariのサポートが追いついていないようです。
Safariでこの記事を読んでいる方は、きっと上記のデモの text-wrap: balance; がうまく動作せずに、そのまま文字が流れていると思います。

注意点

6行の制限

text-wrap - CSS: Cascading Style Sheets | MDN を見てみると、行数について記述がありました。

the Chromium implementation uses six wrapped lines or less

どうやら計算コストが高いようです。
Chromiumでは6行以下の折返しがある行に対しのみ使えるようなので、例えば見出し要素 h1, h2, h3, h4, h5, h6 など、一部で利用する方が良さそうです。

バランスを調整しても要素のインラインサイズは変わらない

text-wrap: balance; で調整されて、見た目上はwidthが縮んでいますが、DevToolsなどのインスペクタで見ると、要素の幅は変わっていません。

CSS テキストの折り返し: バランス  |  CSS and UI  |  Chrome for Developers でAdam Argyle氏は、カード内の見出し(または枠線やシャドウが付いたコンテナ)内の見出しでの利用は良くないと言及しています。

white-spaceと競合する

6行の制限でも触れましたが、6行以下の折返しがある行に対しのみ使えます。
なので、 white-space: nowrap; で文字が折返しが制限されている場合、 text-wrap: balance; は使えません。

white-space: unset; などで、折返しの制限を解除する必要があります。

参考

2
0
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
0