「はみ出す文字」にさようなら!`word-break`と`overflow-wrap`の使い分け、今日でマスターしましょう
Webサイトを作っていて、「あれ、長い英単語やURLが枠を突き抜けてデザインが崩れちゃった!」なんて経験はありませんか?
特に、``タグや``タグといったインライン要素の中に、どこまでも続く長い文字列が入ると、ブラウザは「どこで改行していいか分からないよ!」とパニックを起こしてしまいます。
今日は、そんな悩みを解決するCSSの頼れる相棒、`word-break`と`overflow-wrap`について、難しい理屈抜きで分かりやすく解説しますね。
—
なぜ文字は「はみ出す」のか?
まずはイメージしてみてください。あなたは今、小さな箱の中に「長い紐(文字)」を詰め込もうとしています。
ブラウザの標準ルールは、いわば「単語の途中で切るなんて、失礼でしょ?」という紳士的なルールです。だから、スペースのない長い英単語やURLは、箱の幅を超えても無理やり一本の線として突き抜けてしまうんです。
これを強制的に「箱の中に収める」のが、これから紹介するプロパティたちです。
—
1. 「容赦なく叩き切る」のが `word-break: break-all`
まずは、一番強力な手段から。`word-break: break-all` は、「文字数に達したら、単語の途中だろうがなんだろうが、とにかくそこでぶった切る!」という非常にアグレッシブな設定です。
- こんな時に向いています:
- 画面幅が狭いスマホ表示で、絶対にレイアウトを崩したくない時。
- 予測不可能な長い文字列(IDやURLなど)が並ぶ可能性がある時。
.force-break {
/ 単語の途中でも、容赦なく改行させる /
word-break: break-all;
}
ただし、これを使うと「nice」という単語が「ni / ce」のように途中で切れてしまうこともあります。少し読みづらくなりますが、「レイアウトの死守」が最優先ならこれ一択です。
—
2. 「できるだけ優しく守る」のが `overflow-wrap: break-word`
次に、もう少し控えめな方法をご紹介します。`overflow-wrap: break-word`(以前は `word-wrap` と呼ばれていました)は、「基本は単語の切れ目で改行しようとするけど、どうしても収まりきらない時だけ、泣く泣く単語を切るよ」という、非常に気の利いた設定です。
- こんな時に向いています:
- ブログの本文や、読みやすさを大事にしたいテキスト。
- 「基本的には綺麗に見せたいけど、はみ出すのは勘弁してほしい」という時。
.smart-break {
/ 基本は単語を優先、入り切らない時だけ改行する(一番のおすすめ!) /
overflow-wrap: break-word;
}
こちらは読み手にストレスを与えにくいので、迷ったらまずはこれを試してみてください。
—
現場のリアルな使い分け術
「どっちを使えばいいの?」と迷ったら、こう考えてみてください。
1. 基本は `overflow-wrap: break-word` を使う
- 多くのWebサイトでは、読みやすさが正義です。ほとんどのケースでこちらで満足できるはずです。
- ``タグのURLなどは、これで十分綺麗に収まります。
2. どうしても制御できない「カオスな状況」に `word-break: break-all`
- ユーザーが投稿する掲示板や、システムから出力されるランダムなID文字列など、「単語の切れ目なんて概念がないもの」を表示する時は、迷わず `break-all` を使いましょう。
—
さあ、試してみましょう!
もし今手元にエディタがあれば、こんな感じで比較してみてください。
https://very-very-long-url-example.com/item/1234567890/detail/
Aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa!
実際にブラウザで動かしてみると、`smart-break` は「なるべく切らないように…」と頑張り、`force-break` は「はい、ここで切ります!」と潔く改行してくれるのが分かるはずです。
最後に
CSSのプロパティは覚えるのが大変かもしれませんが、こうして「現場でどう使うか」という目的意識を持つと、すっと頭に入ってきますよね。
デザインが崩れてしまっても大丈夫。それはブラウザがあなたのコードに反応している証拠です。一つずつ調整して、思い通りのレイアウトを作っていきましょう!応援しています。

コメント