text-wrap

見出しなどの各行の長さをそろえたり、本文の最後の行に1語だけ残らないようにしたりするプロパティ。 見出しに手で入れていた改行を、CSSの指定に置き換えられます。

今の書き方

行の長さはブラウザがそろえるので、<br>は要りません。 日本語は1文字ごとに折り返せるため、言葉の途中で切りたくない部分は、以前と同じ<span>で囲みます。 balanceは、その切れ目の中で行の長さをそろえます。

h2 {
  text-wrap: balance;
}

.nowrap {
  white-space: nowrap;
}
<h2>
  <span class="nowrap">新しい機能で、</span><span class="nowrap">以前の書き方を</span><span class="nowrap">置き換える</span>
</h2>

以前の書き方

最後の行が短くならないよう、見出しに<br>を入れ、狭い画面では消していました。 言葉の途中で切れないよう、文節をwhite-space: nowrapの<span>で囲むこともありました。 文言や画面幅が変わるたびに、改行の位置を決め直す必要があります。

.nowrap {
  white-space: nowrap;
}

@media (max-width: 767px) {
  .hidden-md {
    display: none;
  }
}
<h2>
  <span class="nowrap">新しい機能で、</span><br class="hidden-md" /><span class="nowrap">以前の書き方を</span><span class="nowrap">置き換える</span>
</h2>

置き換えるときの注意点

  • balanceだけでは、日本語は言葉の途中で切れることがあります。 文節で折り返すword-break: auto-phraseはまだChromeだけなので、言葉の途中で切りたくない部分は<span>で囲んだまま残します。
  • 全ブラウザでbalanceが使えるのは、Safari 17.5が対応した2024年5月からです。 text-wrapの解禁(2024年3月)より遅れています。
  • 本文向けのprettyは、Firefoxがまだ対応していません。
  • balanceが効くのは、Chromiumは6行まで、Firefoxは10行までの短い文章だけです。 それより長い見出しでは、指定しても折り返しは変わりません。
  • 以前の<br>は、消してから置き換えます。 残すと、その位置で必ず改行されます。

フォールバック

未対応のブラウザでは、普通に折り返すだけで、見出しはそのまま読めます。 <span>のwhite-space: nowrapは未対応のブラウザでも効くため、言葉の途中で切れないことも変わりません。 対象の5ブラウザはすべて対応済みなので、通常は何も足す必要はありません。

Browser Support

  • Chrome

    v114+
    2023-05-30
  • Edge

    v114+
    2023-06-02
  • Safari

    v17.4+
    2024-03-05
  • Safari (iOS)

    v17.4+
    2024-03-05
  • Firefox

    v121+
    2023-12-19

機能名やコードで検索できます

例:aspect-ratio、:has()、padding-top

別の言葉や、プロパティ名で試してください

検索を読み込めませんでした