Webデザインにおける日本語の改行問題
改行問題とは?

みなさん、こんにちは!LikePayのCTO、セルゲイです。
日本語でWebテキストを表示する際に、不自然な場所で改行されてしまうことに悩まされたことはありませんか?
一文字だけ改行されるような最悪のパターンを見ると、見た目の悪さや読みづらさが目立ちます。
この問題に対して、私たちは2つの解決策を検討してきました。それぞれに長所と短所がありますので、順を追ってご紹介します。
解決策その1: spanタグでラッピング
改行させたくない単語や文章を<span>
タグで囲み、特別なCSSスタイルを適用する方法です。
HTML:
<p class="word-break">
<span>「SNS×お店」をセットで楽しむ新アプリ。</span>
<span>お店についてSNSに投稿するだけで、</span>
<span>お金のように使える</span>
<span>割引ポイントがもらえる!</span>
</p>
CSS:
.word-break > span {
display: inline-block;
}
メリット:
- 指定の単位を改行させないように制御できる
デメリット:
- HTMLが冗長になりやすい
- spanごとにスペースが生成される置換問題
- 型にはめたコーディングが必要
解決策その2: wbrタグを使ったソフトな改行
より素直で清やかな方法です。改行しても良い場所に<wbr>
タグを指定します。
HTML:
<p>
「SNS×お店」をセットで楽しむ新アプリ。<wbr/>
お店についてSNSに投稿するだけで、<wbr/>
お金のように使える<wbr/>割引ポイントがもらえる!
</p>
CSS:
body {
word-break: keep-all;
}
メリット:
- コードが簡潔
- 改行位置を制御しやすい
デメリット:
- 特に見当たらない(2020年時点)
解決策その3(2025年現在): CSSの hyphens
と overflow-wrap
の活用
CSS仕様の進化により、より柔軟な改行制御が可能になってきました。日本語では hyphens
はまだ完全に有効ではありませんが、overflow-wrap: anywhere;
や line-break
の指定を使うことで、自然な折返しに近づけることができます。
例:
p {
overflow-wrap: anywhere;
line-break: strict;
}
このように設定することで、ブラウザがより適切な場所で日本語のテキストを折り返すように調整されます。
メリット:
- HTMLに手を加えずCSSだけで制御できる
- モダンブラウザであれば高い互換性がある
デメリット:
- ブラウザごとに若干の解釈の違いが残る可能性あり
- 日本語で完全に理想的な改行とは限らない(改善中)
おわりに
日本語の改行問題は簡単なようで意外と難しいものです。
このような最新の方法を知っておくことで、Webデザインの品質は大きく向上します。この記事が同じ問題で悩んでいるWebデザイナーの方の参考になれば幸いです!
ご質問やご意見があれば、気軽にご連絡ください。