改行の入れ方
新しい行を始めたい位置に <br> を置きます。空要素なので終了タグはありません。
住所は <br> の位置でちょうど改行されます。2 つ目の段落は、ソースに改行があるのに 1 行のままです。HTML は改行、タブ、連続した空白を 1 つの空白として扱うからです。<br> があるのはそのためです。
<br>、<br/>、<br /> はどれも同じ要素になります。プロジェクトで使っている書き方に合わせましょう (JSX と XHTML ではスラッシュが必要です)。
br と p の違い: 改行は余白ではない
<br> は同じ段落の中で行を終えます。新しい <p> は新しい段落を始め、初期の margin によって上下に余白ができます。<br> を重ねて余白を作ることもできますが、崩れやすく、意味としても誤りです。
2 つの箱は似て見えますが、1 つ目はスクリーンリーダーにとって 1 つの段落で、余白を変えるにはすべてのページを編集することになります。2 つ目なら余白は CSS 1 行で決まります。
<br> が適しているのは、住所、詩や歌詞、署名の各行など、改行がテキストの一部である場合です。それ以外には段落、リスト、見出しを使いましょう。
テキストの改行をそのまま表示する
コメント欄、データベース、スクリプトなど別の場所から来たテキストには、<br> タグではなく本物の改行文字が含まれています。CSS の white-space: pre-line を使うと、ブラウザはその改行を改行として表示します。
同じ文字列が、グレーの箱では 1 行、青い箱では 3 行で表示されます。これは innerHTML でユーザーのテキストに <br> タグを組み込むより安全です。そうするとユーザーが HTML を埋め込めてしまうからです。空白やインデントも残したいなら white-space: pre を使います。詳しくは HTML の空白 のページで解説しています。
長い単語を折り返す: wbr
空白のない長い単語や URL は、狭い箱からはみ出すことがあります。<wbr> は必要なら改行してよい位置を示し、必要がなければ何もしません。
1 つ目のパスは箱からはみ出し、2 つ目は <wbr> の位置で改行されます。自分で管理できないテキストには、CSS の overflow-wrap: anywhere を使うと、長い単語をどこでも改行できます。
改行させない
逆に「10 km」や電話番号を途中で改行させたくないこともあります。方法は 2 つです。
はブラウザがそこで改行しない空白なので、「10」と「km」が離れません。white-space: nowrap は span 全体を 1 行に保ちます。 を普通の空白に変えるか、クラスを外すと、この幅ではどちらも 2 行に分かれます。
よくある間違い
- ソースで Enter キーを押して改行されると思う。 HTML の改行は空白になります。
<br>、別々の要素、white-space: pre-lineのどれかを使いましょう。 - 余白のために
<br><br><br>を重ねる。 段落とmarginを使いましょう。 <br>でリストを作る。<ul>や<ol>と<li>を使いましょう。スクリーンリーダーがリストとして読み上げます。</br>と書く。 正しくありません。<br>と書きましょう。innerHTMLでユーザーのテキストに<br>を追加する。 代わりにtextContentを設定し、white-space: pre-lineを使いましょう。
よくある質問
HTML で改行するにはどうすればいいですか?
新しい行を始めたい位置に <br> を入れます: Line one<br>Line two。HTML ファイルの中で Enter キーを押しても改行されません。ブラウザはソースの改行を普通の空白として扱うからです。
<br>、<br/>、<br /> のどれで書くべきですか?
HTML ではどれも使え、同じ要素になります。<br> が素の HTML の書き方で、スラッシュ付きは XHTML や JSX との互換のために受け付けられています。</br> だけを書くのは無効ですが、ブラウザはもう 1 つの改行として読みます。
<p> ではなく <br> を使うのはどんなときですか?
住所や詩のように、改行そのものが内容の一部であるときは <br> を使います。段落が分かれるなら別々の <p> 要素を使い、間隔は <br> を重ねるのではなく CSS の margin で空けます。
<br> を追加せずにテキストの改行をそのまま表示するには?
要素に CSS で white-space: pre-line を指定します。ブラウザはテキスト内の改行をすべて改行として表示し、余分な空白はまとめたままにします。ユーザーのコメントや JavaScript で読み込んだテキストに便利です。
HTML で改行させないようにするには?
テキストを white-space: nowrap を指定した要素で囲むか、2 つの単語を改行しない空白 でつなぎます。そうすると常に同じ行に並びます。