CSSでテキストを改行する方法と、改行しない方法を解説します。

結論から書くと、改行そのものの制御は white-space、長い単語の折り返しは overflow-wrap、日本語の読みやすい位置での改行は word-break: auto-phrase を使います。

▼目的別のプロパティ

やりたいこと プロパティ
HTMLの改行をそのまま出す white-space pre-line
絶対に改行させない white-space nowrap
長いURLをはみ出させない overflow-wrap break-word
日本語を意味の切れ目で折る word-break auto-phrase
行末の1文字だけ残るのを防ぐ text-wrap balance / pretty

以下、それぞれ解説します。

テキストの改行方法

改行を許可する方法

結論:HTML内の改行をそのまま画面に出したいときは、white-spacepre-line にします。

.example {
  white-space: pre-line;
}

pre でも改行は反映されますが、挙動が違います。

▼preとpre-lineの違い

改行 連続した空白 自動折り返し
normal(初期値) 無視 1つにまとめる する
pre そのまま そのまま しない
pre-line そのまま 1つにまとめる する
pre-wrap そのまま そのまま する

Webページの本文で使うなら pre-line です。pre は自動折り返しをしないため、長い行があるとコンテナからはみ出して横スクロールが発生します。

データベースに保存した改行付きのテキストを表示する場面では、pre-linepre-wrap が使えます。インデントの空白も残したいなら pre-wrap を選んでください。

改行を許可しない方法

結論:改行させたくないときは white-spacenowrap にします。

.example {
  white-space: nowrap;
}

テキストは1行に連続して表示されます。ただし、コンテナからはみ出したぶんは切れずに飛び出します。はみ出しを「…」で省略したい場合は、次の3つをセットで指定します。

.example {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

text-overflow: ellipsis は、overflow: hiddenwhite-space: nowrap の両方が揃っていないと効きません。1つでも欠けると省略記号が出ないので、3点セットで覚えておくと迷いません。

テキストの折り返し方法

結論:長いURLや英単語がコンテナからはみ出すのを防ぐには overflow-wrap: break-word を使います。

.example {
  overflow-wrap: break-word;
}

word-wrapはoverflow-wrapの旧名

結論:word-wrapoverflow-wrap は同じものです。別々の機能ではありません。

word-wrap は Internet Explorer が独自に実装したプロパティで、後から標準化されるときに overflow-wrap という名前になりました。現在のブラウザは互換性のために word-wrap も受け付けますが、これから書くコードでは overflow-wrap を使ってください。両方書く必要はありません。

overflow-wrapとword-breakの違い

結論:overflow-wrap は「はみ出すときだけ」単語を割ります。word-break: break-all は「はみ出すかどうかに関係なく」どこでも割ります。

▼2つの違い

overflow-wrap: break-word word-break: break-all
割るタイミング はみ出すときだけ 行末に来たら常に
英文の読みやすさ 保たれる 単語が途中で切れる
向いている用途 本文・コメント欄 幅の狭い枠に詰め込むとき

本文には overflow-wrap: break-word を使ってください。word-break: break-all は英単語を無造作に切るので、英語が混ざる文章では読みにくくなります。

どこでも割ってよいが英語の読みやすさも保ちたい場合は、overflow-wrap: anywhere という値もあります。break-word との違いは、要素の最小幅の計算に折り返しが反映されるかどうかです。フレックスやグリッドの中で意図せず幅が広がる場合は、anywhere を試してみてください。

日本語を読みやすい位置で改行する

結論:word-break: auto-phrase を指定すると、日本語の文節の切れ目で改行されるようになります。「今日は/いい天気」のような自然な位置で折り返せます。

.example {
  word-break: auto-phrase;
}

日本語は単語の間に空白が無いため、ブラウザは基本的に「入るところまで入れて折る」という動きをします。その結果、「今日はい/い天気」のように意味の途中で切れることがあります。

auto-phrase は、機械学習モデルを使って文節の切れ目を判定し、そこで優先的に改行します。見出しやキャッチコピーのように、読みやすさが重要な短い文で効果が出ます。

使うには、要素に lang="ja" が指定されている必要があります。これが無いと効きません。

<html lang="ja">

対応状況は Chrome 119以降で、2026年9月時点では Chromium 系のブラウザのみです。未対応のブラウザでは従来どおりの改行になるだけなので、そのまま指定して構いません。崩れることはありません。

行末に1文字だけ残るのを防ぐ

見出しの最後の1文字だけが次の行に落ちる、いわゆる「泣き別れ」を減らすには text-wrap が使えます。

h2 {
  /* 各行の長さを揃える。見出し向け */
  text-wrap: balance;
}

p {
  /* 最終行が極端に短くなるのを防ぐ。本文向け */
  text-wrap: pretty;
}

balance は行数の少ない要素(見出しなど)向けで、行の長さを均等に近づけます。pretty は本文向けで、最終行が1単語だけになるのを避けます。

balance は処理コストがあるため、ブラウザ側で対象の行数に上限が設けられています。長い本文に指定しても全体には効きません。見出しには balance、本文には pretty という使い分けにしてください。

どのプロパティを選ぶかの判断

結論:「はみ出す」問題なら overflow-wrap、「改行させたい・させたくない」なら white-space、「読みやすさを上げたい」なら word-break: auto-phrasetext-wrap です。

よくあるのが、レイアウト崩れを直そうとして word-break: break-all を当ててしまい、英文が読みにくくなるケースです。まず overflow-wrap: break-word を試して、それで解決するならそちらを使ってください。

長いURLがはみ出すという症状なら、次の1行で足ります。

.content {
  overflow-wrap: break-word;
}

改行やインデントの制御は、CSSで2行目以降を1文字下げる方法と組み合わせて使う場面が多いプロパティです。折り返した2行目以降の位置を揃えたい場合はこちらもどうぞ。

CSSの書き方をまとめて学び直したい場合は、Webコーディングにオススメの学習本に学習順をまとめています。フレームワーク側で解決したい場合はCSSでオススメのフレームワークと実装例も参考になります。

ABOUT ME
りん
このブログでは、Web開発やプログラミングに関する情報を中心に、私が日々感じたことや学んだことをシェアしています。技術と生活の両方を楽しめるブログを目指して、日常で触れた出来事や本、グルメの話題も取り入れています。気軽に覗いて、少しでも役立つ情報や楽しいひとときを見つけてもらえたら嬉しいです。