「文章を改行したいのに、なぜか画面では改行されない…」
「Enterキーを押して改行したのに、ブラウザでは一列に表示される」
「他のサイトみたいに、きれいに改行されたページを作りたい」
ウェブページを作っているとき、こんな悩みを感じたことはありませんか?
HTML(エイチティーエムエル)では、普通に文章の中でEnterキーを押して改行しても、ブラウザにはそのまま反映されません。これにはHTMLのルールが関係しています。
この記事では、HTMLで改行をするための基本的なコードから、実際のWebサイト制作で使える応用テクニックまでやさしく解説します。これを読めば、もう改行で悩むことはありませんよ。
HTMLで改行が反映されない理由

HTMLの空白処理の仕組み
HTMLには「空白の正規化」という仕組みがあります。これは、複数の空白文字や改行を1つの空白にまとめるルールです。
実際の例で見てみよう
テキストエディタでHTMLファイルを編集するとき、文章の途中で改行しても:
エディタで書いたHTML
これは1行目です。
これは2行目です。
これは3行目です。
ブラウザでの表示結果
これは1行目です。これは2行目です。これは3行目です。
このように連続した1行として表示されます。
なぜこのような仕組みなの?
HTMLは「文書の構造」を表現する言語であり、「見た目」は主にCSSで制御するという設計思想があります。そのため、エディタ上での改行や空白は、意図しないレイアウト崩れを防ぐために基本的に無視されます。
他の言語との違い
- Word文書: Enterキーを押せばそのまま改行
- テキストファイル: 改行文字がそのまま反映
- HTML: 専用のタグを使って改行を指示
HTMLで改行する基本:brタグ
brタグの使い方
HTMLで改行したいときは、<br>
(ビーアール)タグを使います。
これは1行目です。<br>
これは2行目です。<br>
これは3行目です。
このように書くと、ブラウザでは以下のように表示されます:
これは1行目です。
これは2行目です。
これは3行目です。
brタグの特徴
自己完結型タグ
<br>
は「空要素」または「自己完結型タグ」と呼ばれ、開始タグと終了タグが一緒になっています。
<!-- 正しい書き方 -->
<br>
<!-- HTML5では不要だが、XHTMLでは使われる書き方 -->
<br />
<!-- 間違った書き方 -->
<br></br>
複数の改行
連続して使うことで、複数行の改行も可能です:
1行目<br>
<br>
3行目(2行目は空白行)
brタグを使う場面
住所の表示
<address>
〒100-0001<br>
東京都千代田区千代田1-1<br>
千代田ビル3階
</address>
詩や短い文章
<p>
桜咲く<br>
春の陽だまり<br>
新たな始まり
</p>
連絡先情報
<div class="contact">
電話: 03-1234-5678<br>
FAX: 03-1234-5679<br>
メール: info@example.com
</div>
段落単位ならpタグを使おう
pタグとは?
段落ごとに文章を分けたいときは、<p>
(ピー)タグを使います。
<p>これは最初の段落です。長い文章でも、一つの段落としてまとめることができます。</p>
<p>これは次の段落です。前の段落との間には自動的に余白が入ります。</p>
<p>これは3つ目の段落です。このようにして文章を構造化できます。</p>
pタグの自動余白
pタグを使うと、ブラウザが自動的に段落の前後に余白(マージン)を設定します。これにより、読みやすいレイアウトになります。
brタグとpタグの使い分け
brタグを使う場合
<p>
お名前: 山田太郎<br>
年齢: 30歳<br>
職業: エンジニア
</p>
適用場面
- 同じ段落内での短い改行
- リスト的な情報の表示
- 住所や連絡先の改行
pタグを使う場合
<p>HTMLは、ウェブページを作るための言語です。文書の構造を定義するために使われます。</p>
<p>CSSは、HTMLで作った文書の見た目を整えるための言語です。色や配置、フォントなどを指定できます。</p>
<p>JavaScriptは、ウェブページに動きをつけるための言語です。ユーザーとの対話的な機能を実現できます。</p>
適用場面
- 文章の段落分け
- 独立した内容のまとまり
- ブログ記事や説明文
実際の使用例
ブログ記事での使い分け
<article>
<h1>美味しいラーメンの作り方</h1>
<p>今回は、家庭で簡単に作れる美味しいラーメンのレシピをご紹介します。</p>
<h2>材料</h2>
<p>
中華麺: 2玉<br>
豚バラ肉: 200g<br>
長ネギ: 1本<br>
もやし: 1袋
</p>
<h2>作り方</h2>
<p>まず、豚バラ肉を食べやすい大きさに切ります。</p>
<p>次に、フライパンで豚バラ肉を炒めて、香ばしく焼き色をつけます。</p>
<p>最後に、茹でた麺と具材を合わせて完成です。</p>
</article>
特殊な改行方法と応用テクニック

preタグで改行や空白をそのまま表示
詩やソースコードのように、改行や空白をそのまま表示したいときは <pre>
(プリ)タグを使います。
基本的な使い方
<pre>
これは1行目
これはインデントした2行目
さらにインデントした3行目
</pre>
プログラムコードの表示
<pre><code>
function greet(name) {
console.log("Hello, " + name + "!");
}
greet("World");
</code></pre>
詩や歌詞の表示
<pre>
桜散り
風に舞い踊る
春の終わり
新緑萌え
希望を胸に
歩み続ける
</pre>
CSSを使った改行制御
white-spaceプロパティ
CSSの white-space
プロパティを使うと、より柔軟な改行制御ができます。
<p style="white-space: pre-wrap;">
これは
改行がそのまま
反映される
文章です
</p>
white-spaceの種類
値 | 改行の扱い | 空白の扱い | 自動折返し |
---|---|---|---|
normal | 無視 | 1つにまとめる | あり |
pre | 保持 | 保持 | なし |
pre-wrap | 保持 | 保持 | あり |
pre-line | 保持 | 1つにまとめる | あり |
nowrap | 無視 | 1つにまとめる | なし |
実用的な使用例
/* コードブロック */
.code-block {
white-space: pre;
font-family: monospace;
background-color: #f5f5f5;
padding: 10px;
}
/* 折り返し可能なコード */
.code-wrap {
white-space: pre-wrap;
word-break: break-all;
}
/* 改行のみ反映 */
.preserve-lines {
white-space: pre-line;
}
CSSで改行を制御する
強制改行の禁止
.no-break {
white-space: nowrap;
}
<span class="no-break">この文章は絶対に改行されません</span>
文字単位での改行
.break-all {
word-break: break-all;
}
<p class="break-all">verylongwordthatneedstobebrokenintosmallerpieces</p>
レスポンシブデザインでの改行
メディアクエリを使った改行制御
デバイスのサイズに応じて改行の動作を変える方法:
<p class="responsive-text">
パソコンでは<span class="pc-break"><br></span>一行で表示、
スマホでは<span class="mobile-break"><br></span>改行表示
</p>
/* パソコン用(改行なし) */
@media (min-width: 768px) {
.mobile-break br {
display: none;
}
}
/* スマホ用(改行あり) */
@media (max-width: 767px) {
.pc-break br {
display: none;
}
}
flexboxを使った改行制御
<div class="flex-container">
<span>項目1</span>
<span>項目2</span>
<span>項目3</span>
</div>
.flex-container {
display: flex;
flex-wrap: wrap;
}
.flex-container span {
margin-right: 20px;
margin-bottom: 10px;
}
よくある間違いと対処法
連続するbrタグの問題
間違った使い方
<!-- 悪い例: 余白作りのためのbr連続使用 -->
<p>段落1</p>
<br><br><br>
<p>段落2</p>
正しい修正方法
<p>段落1</p>
<p class="large-margin">段落2</p>
.large-margin {
margin-top: 60px;
}
インライン要素での改行問題
問題のあるコード
<span>テキスト1<br>テキスト2</span>
spanなどのインライン要素内でbrタグを使うと、予期しない動作になる場合があります。
適切な解決方法
<div>
<div>テキスト1</div>
<div>テキスト2</div>
</div>
または
<p>
テキスト1<br>
テキスト2
</p>
SEOに悪影響を与える改行
避けるべき使い方
<!-- 悪い例: 意味のない空のp要素 -->
<p>コンテンツ1</p>
<p> </p>
<p> </p>
<p>コンテンツ2</p>
推奨される方法
<p>コンテンツ1</p>
<p class="spaced">コンテンツ2</p>
.spaced {
margin-top: 40px;
}
アクセシビリティを考慮した改行

スクリーンリーダーでの読み上げ
brタグは、スクリーンリーダーで「改行」として読み上げられる場合があります。過度な使用は避けましょう。
より良い構造化
<!-- 良い例: 意味のある構造 -->
<address>
<div>〒100-0001</div>
<div>東京都千代田区千代田1-1</div>
<div>千代田ビル3階</div>
</address>
<!-- 問題のある例 -->
<div>
〒100-0001<br>
東京都千代田区千代田1-1<br>
千代田ビル3階
</div>
aria-labelの活用
<div aria-label="住所">
<div>〒100-0001</div>
<div>東京都千代田区千代田1-1</div>
<div>千代田ビル3階</div>
</div>
実際のWebサイトでの活用例
ランディングページのキャッチコピー
<div class="hero-text">
<h1>
最高の品質を<br class="pc-only">
あなたに<br class="mobile-only">お届け
</h1>
</div>
@media (max-width: 767px) {
.pc-only {
display: none;
}
}
@media (min-width: 768px) {
.mobile-only {
display: none;
}
}
商品紹介ページでの仕様表示
<div class="product-specs">
<h3>商品仕様</h3>
<dl>
<dt>サイズ</dt>
<dd>幅200mm × 高さ150mm × 奥行50mm</dd>
<dt>重量</dt>
<dd>約500g</dd>
<dt>材質</dt>
<dd>
本体: アルミニウム合金<br>
内装: シリコン樹脂
</dd>
</dl>
</div>
ブログ記事での引用
<blockquote>
<p>
プログラミングとは、<br>
問題を解決するための<br>
創造的な活動である。
</p>
<cite>— プログラミング名言集より</cite>
</blockquote>
トラブルシューティング
よくある問題と解決法
brタグが効かない場合
原因1: CSSで display: none
が設定されている
/* 問題のあるCSS */
br {
display: none;
}
原因2: white-space: nowrap
が設定されている
/* 問題のあるCSS */
.no-wrap {
white-space: nowrap;
}
preタグで横スクロールが発生する
問題のあるコード
<pre>とても長い一行のテキストが横にはみ出してしまう場合</pre>
解決方法
pre {
white-space: pre-wrap;
word-break: break-all;
overflow-wrap: break-word;
}
スマホで改行位置がおかしい
解決方法1: word-break
の調整
.mobile-text {
word-break: keep-all;
overflow-wrap: break-word;
}
解決方法2: 改行位置の指定
<p>スマートフォンでの<wbr>表示を<wbr>最適化</p>
最新のHTML5での改行ベストプラクティス

セマンティックなマークアップ
<!-- 従来の方法 -->
<div>
項目1<br>
項目2<br>
項目3
</div>
<!-- より良い方法 -->
<ul>
<li>項目1</li>
<li>項目2</li>
<li>項目3</li>
</ul>
モダンCSSとの組み合わせ
CSS Grid
<div class="grid-layout">
<div>アイテム1</div>
<div>アイテム2</div>
<div>アイテム3</div>
</div>
.grid-layout {
display: grid;
grid-template-columns: 1fr;
gap: 20px;
}
Flexbox
.flex-column {
display: flex;
flex-direction: column;
gap: 15px;
}
CSS論理プロパティ
.modern-spacing {
margin-block-end: 20px; /* margin-bottom の論理版 */
padding-inline: 10px; /* 左右のpadding */
}
まとめ
HTMLで改行を正しく使うためのポイントをまとめます:
基本的な使い方
- 短い改行には
<br>
タグ - 段落分けには
<p>
タグ - そのまま表示したい場合は
<pre>
タグ
応用テクニック
- CSSの
white-space
プロパティで細かい制御 - レスポンシブデザインでの改行切り替え
- アクセシビリティを考慮した構造化
注意点
- 連続する
<br>
タグの使用は避ける - 意味のない空の要素は作らない
- SEOとアクセシビリティへの配慮
現代的なアプローチ
- セマンティックなマークアップを心がける
- CSSでレイアウトを制御
- 様々なデバイスに対応した設計
コメント