text-wrap: pretty のブラウザフォールバック戦略

Firefox や古いブラウザ向けに text-wrap: pretty を機能検出して優雅にフォールバックする方法。

Browser Support

詳細な説明

現在のサポート状況(2026年初頭)

プロパティ Chrome Edge Safari Firefox
text-wrap: nowrap ✅ 全バージョン ✅ 全バージョン ✅ 全バージョン ✅ 全バージョン
text-wrap: wrap ✅ 全バージョン ✅ 全バージョン ✅ 全バージョン ✅ 全バージョン
text-wrap: balance ✅ 114+ ✅ 114+ ✅ 17.5+ ✅ 121+
text-wrap: pretty ✅ 117+ ✅ 117+ ✅ 17.5+ ❌ 未対応
text-wrap: stable ✅ 121+ ✅ 121+ ✅ 17.5+ ❌ 未対応

Firefox はグローバルブラウザシェアの3%程度ですが、技術系・アクセシビリティ意識の高い層・開発者コミュニティでは比率が上がります。無視はできません。

戦略 1: カスケードに任せる(推奨)

text-wrap: prettyプログレッシブエンハンスメント で、未対応ブラウザはデフォルトの貪欲折り返しに静かにフォールバックします。デフォルト折り返しでデザインが成立するなら、ルールだけ書いてカスケードに任せましょう:

article p {
  text-wrap: pretty;
}

JavaScript も @supports もメンテも不要です。

戦略 2: 異なるフォールバックには @supports

未対応ブラウザに別スタイルを当てたい場合は @supports を使います:

article p {
  /* 全ブラウザのベースライン */
  hyphens: auto;
  line-height: 1.6;
}

@supports (text-wrap: pretty) {
  article p {
    text-wrap: pretty;
  }
}

@supports not (text-wrap: pretty) {
  article p {
    /* フォールバック: line-height を少し詰めて見栄えを補う */
    line-height: 1.55;
  }
}

戦略 3: JavaScript の機能検出

実行時の判断(稀)に:

const supportsPretty = CSS.supports('text-wrap', 'pretty');
const supportsBalance = CSS.supports('text-wrap', 'balance');

document.documentElement.classList.toggle('no-text-wrap-pretty', !supportsPretty);
document.documentElement.classList.toggle('no-text-wrap-balance', !supportsBalance);

その後 .no-text-wrap-pretty article p { ... } でスタイルを当てます。テキスト折り返しのために JS 駆動の分岐が本当に必要なケースはほぼありません。

古いブラウザとレガシーテクニック

本当に古いブラウザ(IE11、2020年以前の Safari など)では text-wrap は完全に無視されます。テキストはデフォルトの貪欲アルゴリズムで折り返されます — そのユーザーがずっと見てきた挙動です。それらの環境でピクセルパーフェクトな互換性が必要な場合(ほぼ不要)でない限り、Adam Mordecai 氏の Balance Text のような JS ライブラリを出荷する必要はありません。

ユースケース

フォールバック挙動を文書化したいデザインシステム保守者、Firefox 比率の高いユーザーを抱えるチーム、アクセシビリティ重視プロジェクト、保守的なブラウザマトリクスを持つ官公庁・エンタープライズサイト。

試してみるCSS text-wrap プレイグラウンド

フルツールを開く