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

HTMLの基本的な仕組み
ウェブページは、ブラウザがHTMLコードを解釈して表示します。この際、ブラウザには独特のルールがあります。
空白文字の処理ルール
HTMLでは、以下の文字がすべて「空白文字」として扱われます:
- スペース(半角・全角)
- タブ文字
- 改行文字(Enterキーで入力)
そして、連続する空白文字は1つの半角スペースにまとめられる というルールがあります。
実際の例で確認
HTMLファイルに書いたコード:
これは1行目です。
これは2行目です。
これは4行目です。
ブラウザで表示される結果:
これは1行目です。 これは2行目です。 これは4行目です。
すべて1行につながって表示されてしまいます。
なぜこのような仕組みになっているのか
理由1:コードの読みやすさ
- HTMLコード自体を見やすく書ける
- インデントや改行でコードを整理できる
理由2:レスポンシブ対応
- 画面サイズに応じて自動的に文字が折り返される
- 固定的な改行位置に縛られない
理由3:言語の違いへの対応
- 日本語と英語では文章の区切り方が異なる
- ブラウザが適切に調整できる
HTMLとテキストファイルの違い
ファイル形式 | 改行の扱い | 表示方法 |
---|---|---|
テキストファイル | 改行がそのまま反映 | エディタで見たまま |
HTMLファイル | 改行は無視される | ブラウザが解釈して表示 |
HTMLでは普通に改行しても、ブラウザは改行を無視します。次は、改行したいときにどう書けばいいのか見ていきましょう。
HTMLで改行する基本:brタグ
brタグの基本的な使い方
HTMLで改行したいときは、<br>
(Break Row)タグを使います。
基本的な書き方
これは1行目です。<br>
これは2行目です。
ブラウザでの表示結果:
これは1行目です。
これは2行目です。
brタグの特徴
自己完結型タグ
<br>
は 空要素(void element) と呼ばれ、開始タグのみで完結します。
<!-- 正しい書き方 -->
<br>
<!-- HTML5では不要だが、XHTMLスタイルでも可 -->
<br />
<!-- 間違った書き方 -->
<br></br>
複数の改行
連続して改行したい場合は、<br>
を複数使用できます:
1行目です。<br>
2行目です。<br>
<br>
4行目です(間に空行あり)。
実用的な使用例
住所の表示
<p>
〒150-0001<br>
東京都渋谷区神宮前1-1-1<br>
渋谷ビル3階
</p>
詩や短歌の表示
<p>
春風や<br>
闘志いだきて<br>
丘に立つ<br>
高村光太郎
</p>
連絡先情報
<div>
お問い合わせ<br>
電話:03-1234-5678<br>
メール:info@example.com<br>
営業時間:9:00-18:00
</div>
brタグ使用時の注意点
過度な使用は避ける
<!-- 良くない例:改行の多用 -->
<p>
こんにちは。<br>
<br>
<br>
今日はいい天気ですね。<br>
<br>
明日も晴れるでしょう。
</p>
<!-- 良い例:段落で分ける -->
<p>こんにちは。</p>
<p>今日はいい天気ですね。</p>
<p>明日も晴れるでしょう。</p>
レスポンシブデザインでの考慮
<!-- スマホでは改行位置が不適切になる可能性 -->
<p>ここで改行したいけれど、<br>スマホでは変な位置で切れる</p>
<!-- CSSで調整する方が良い場合も -->
<p class="responsive-text">ここで改行したいけれど、スマホでは変な位置で切れる</p>
改行には <br>
を使うのが基本です。次は、文章を段落ごとに分けるときのタグを紹介します。
段落単位ならpタグを使おう

pタグとは
<p>
(Paragraph)タグは、文章の段落を表すために使用します。段落ごとに文章を分けたいときに使用し、自動的に前後に余白がつきます。
基本的な使い方
<p>これは最初の段落です。文章がまとまった内容になっています。</p>
<p>これは次の段落です。前の段落とは異なる内容について述べています。</p>
<p>これは3番目の段落です。それぞれの段落には適度な余白が自動的に設定されます。</p>
pタグとbrタグの使い分け
用途 | 使用するタグ | 特徴 |
---|---|---|
段落の区切り | <p> | 前後に余白が自動設定 |
行内での改行 | <br> | 余白なしで改行のみ |
具体的な使い分け例
段落分けが適切な場合:
<p>HTMLは、ウェブページを作成するためのマークアップ言語です。
タグを使って文書の構造を定義します。</p>
<p>CSSは、HTMLで作成した文書の見た目を装飾するためのスタイルシート言語です。
色や配置、サイズなどを指定できます。</p>
<p>JavaScriptは、ウェブページに動的な機能を追加するためのプログラミング言語です。
ユーザーの操作に応じて内容を変更できます。</p>
行内改行が適切な場合:
<p>
会社概要<br>
社名:株式会社サンプル<br>
設立:2020年4月1日<br>
代表者:田中太郎<br>
所在地:東京都渋谷区
</p>
pタグのスタイリング
CSSでの余白調整
<style>
.narrow-paragraph {
margin-bottom: 10px; /* 段落下の余白を狭く */
}
.wide-paragraph {
margin-bottom: 30px; /* 段落下の余白を広く */
}
.no-margin {
margin: 0; /* 余白を完全になくす */
}
</style>
<p class="narrow-paragraph">余白が狭い段落です。</p>
<p class="wide-paragraph">余白が広い段落です。</p>
<p class="no-margin">余白がない段落です。</p>
段落内での部分的な改行
<p>
この段落では、<br>
部分的に改行を使用して<br>
読みやすくしています。<br>
しかし、全体としては一つの段落として扱われます。
</p>
実用的な段落の使用例
ブログ記事での使用
<article>
<h1>HTMLの基本を学ぼう</h1>
<p>HTMLは、ウェブページを作成するための基本的な技術です。
初心者の方でも、基本的なタグを覚えることで簡単なページを作ることができます。</p>
<p>最初に覚えるべきタグは、見出しタグ、段落タグ、改行タグです。
これらを使いこなすことで、読みやすい文書構造を作ることができます。</p>
<p>実際にコードを書いて、ブラウザで確認しながら学習を進めることをおすすめします。
理論だけでなく、実践を通して理解を深めましょう。</p>
</article>
商品説明での使用
<div class="product-description">
<p>この商品は、日常使いに最適なワイヤレスマウスです。
シンプルなデザインで、どんな環境にも馴染みます。</p>
<p>電池寿命は約6ヶ月と長く、頻繁な電池交換の必要がありません。
また、静音設計により、図書館やカフェでも気兼ねなく使用できます。</p>
<p>接続は簡単で、USBレシーバーをパソコンに挿すだけですぐに使用開始できます。
WindowsとMac、両方に対応しています。</p>
</div>
文章を自然に読みやすくするには、段落ごとに <p>
を使い、同じ段落の中の小さな改行には <br>
を使うのがおすすめです。次は、特殊なケースでの改行方法を紹介します。
特殊な改行方法と応用テクニック
preタグで改行や空白をそのまま表示
<pre>
(Preformatted text)タグを使用すると、テキストエディタで入力した改行や空白がそのままブラウザに表示されます。
preタグの基本的な使い方
<pre>
これは1行目
これはインデントした2行目
さらにインデントした3行目
5行目(間に空行があります)
</pre>
表示結果: エディタで書いた通りに改行と空白が保持されます。
preタグの主な用途
ソースコードの表示
<pre>
function greetUser(name) {
if (name) {
console.log("Hello, " + name + "!");
} else {
console.log("Hello, World!");
}
}
</pre>
詩や文学作品の表示
<pre>
道程 高村光太郎
僕の前に道はない
僕の後ろに道は出来る
ああ、自然よ
父よ
僕を一人立ちにさせた廣大な父よ
</pre>
ASCII アートの表示
<pre>
/\_/\
( o.o )
> ^ <
</pre>
preタグの注意点
長い行の処理
<style>
.code-pre {
overflow-x: auto; /* 横スクロールを有効 */
background-color: #f4f4f4;
padding: 10px;
border-radius: 4px;
}
</style>
<pre class="code-pre">
function veryLongFunctionNameThatMightCauseHorizontalScrolling(parameter1, parameter2, parameter3) {
return parameter1 + parameter2 + parameter3;
}
</pre>
CSSのwhite-spaceプロパティを使った改行制御
CSS の white-space
プロパティを使用すると、改行と空白の処理方法を細かく制御できます。
white-spaceの値と効果
値 | 改行の扱い | 空白の扱い | 自動折り返し |
---|---|---|---|
normal | 無視 | まとめる | あり |
nowrap | 無視 | まとめる | なし |
pre | 保持 | 保持 | なし |
pre-wrap | 保持 | 保持 | あり |
pre-line | 保持 | まとめる | あり |
実用例
改行を保持して自動折り返しも有効
<style>
.preserve-lines {
white-space: pre-wrap;
background-color: #f9f9f9;
padding: 10px;
border: 1px solid #ddd;
}
</style>
<p class="preserve-lines">
これは1行目です
これは2行目です
とても長い行の場合は自動的に折り返されますが、明示的な改行は保持されます
</p>
改行のみ保持(空白はまとめる)
<style>
.preserve-breaks {
white-space: pre-line;
}
</style>
<p class="preserve-breaks">
行1
行2 複数の空白 もまとめられます
行3
</p>
折り返しを禁止
<style>
.no-wrap {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis; /* はみ出し部分を...で表示 */
}
</style>
<p class="no-wrap">
この文章は非常に長いのですが、折り返されることなく一行で表示され、はみ出し部分は省略記号で表示されます。
</p>
その他の改行関連テクニック
条件付き改行(wbrタグ)
<wbr>
(Word Break Opportunity)タグは、必要に応じて改行できる位置を示します:
<p>
とても長いURLの場合:https://www<wbr>.example<wbr>.com<wbr>/very<wbr>/long<wbr>/path<wbr>/to<wbr>/page
</p>
CSSでの改行制御
特定の文字で改行
<style>
.break-word {
word-break: break-all; /* すべての文字で改行可能 */
}
.break-keep {
word-break: keep-all; /* 単語の途中では改行しない */
}
</style>
<p class="break-word">verylongwordwithoutspaces</p>
<p class="break-keep">とても長い日本語の文章でも単語の途中では改行されません</p>
改行の禁止と許可
<style>
.no-break {
white-space: nowrap;
}
.force-break {
word-break: break-word;
}
</style>
<span class="no-break">この部分は改行されません</span>
<span class="force-break">verylongwordthatwillbebrokenifnecessary</span>
レスポンシブデザインでの改行
画面サイズに応じた改行制御
<style>
.responsive-break {
display: inline;
}
@media screen and (max-width: 768px) {
.responsive-break::after {
content: "\A"; /* 改行文字を挿入 */
white-space: pre;
}
}
</style>
<p>スマートフォンでは<span class="responsive-break"></span>ここで改行されます</p>
デバイス別の改行最適化
<style>
/* デスクトップ向け */
.desktop-br {
display: none;
}
/* タブレット向け */
@media screen and (max-width: 1024px) {
.tablet-br {
display: inline;
}
.desktop-br {
display: none;
}
}
/* スマートフォン向け */
@media screen and (max-width: 480px) {
.mobile-br {
display: inline;
}
.tablet-br,
.desktop-br {
display: none;
}
}
</style>
<p>
長いテキストですが<br class="mobile-br">、
スマホでは短く区切り<br class="tablet-br">、
タブレットでは適度に区切り、
デスクトップでは自然に表示されます。
</p>
詩やコードなら <pre>
、デザイン調整なら CSS の white-space
を使うことで、状況に応じてより柔軟に改行をコントロールできます。
HTMLの改行に関するベストプラクティス

意味に基づいた改行の選択
セマンティック(意味的)な使い分け
改行方法を選ぶ際は、その内容の意味を考慮することが重要です:
内容の種類 | 推奨する方法 | 理由 |
---|---|---|
論理的な段落 | <p> | 文章の構造を明確に |
住所・連絡先 | <br> | 行ごとの関連性を保持 |
プログラムコード | <pre> または <code> | 書式の正確な保持 |
詩・歌詞 | <pre> または <br> | 作者の意図した改行を保持 |
悪い例と良い例
❌ 悪い例:見た目だけを考えた改行
<p>
こんにちは。<br><br><br>
今日はいい天気ですね。<br><br>
明日も晴れるといいですね。
</p>
✅ 良い例:意味に基づいた構造
<p>こんにちは。</p>
<p>今日はいい天気ですね。</p>
<p>明日も晴れるといいですね。</p>
アクセシビリティへの配慮
スクリーンリーダーへの配慮
<!-- 良い例:住所を論理的に構造化 -->
<address>
<div>〒150-0001</div>
<div>東京都渋谷区神宮前1-1-1</div>
<div>渋谷ビル3階</div>
</address>
<!-- または -->
<address>
〒150-0001<br>
東京都渋谷区神宮前1-1-1<br>
渋谷ビル3階
</address>
改行の意味を明確に
<!-- 装飾的な改行は避ける -->
<h1>タイトル<br>サブタイトル</h1>
<!-- より良い構造 -->
<h1>タイトル</h1>
<h2>サブタイトル</h2>
<!-- または -->
<h1>
タイトル
<small>サブタイトル</small>
</h1>
パフォーマンスと保守性
CSSによる改行制御
<style>
/* 保守しやすいCSS */
.contact-info {
line-height: 1.6;
}
.contact-info .line {
display: block;
}
/* レスポンシブ対応 */
@media screen and (max-width: 768px) {
.contact-info .line {
margin-bottom: 0.5em;
}
}
</style>
<div class="contact-info">
<span class="line">電話:03-1234-5678</span>
<span class="line">メール:info@example.com</span>
<span class="line">営業時間:9:00-18:00</span>
</div>
トラブルシューティング
よくある問題と解決法
問題1:改行が効かない
症状:
<p>
1行目
2行目
3行目
</p>
すべて1行で表示される。
解決法:
<p>
1行目<br>
2行目<br>
3行目
</p>
問題2:余白が大きすぎる
症状:
<p>1行目</p>
<p>2行目</p>
段落間の余白が大きすぎる。
解決法:
<style>
p {
margin-bottom: 0.5em; /* 余白を調整 */
}
</style>
問題3:preタグで横スクロールが発生
症状:
<pre>非常に長いコードが横にはみ出してしまう</pre>
解決法:
<style>
pre {
overflow-x: auto;
word-wrap: break-word;
white-space: pre-wrap;
}
</style>
ブラウザ間の差異への対処
古いブラウザでの対応
<style>
/* IE対応 */
.line-break::after {
content: "\A";
white-space: pre;
}
/* モダンブラウザ */
@supports (display: contents) {
.line-break {
display: block;
}
}
</style>
デバッグ方法
開発者ツールでの確認
- F12キー で開発者ツールを開く
- Elements タブで該当箇所を確認
- Computed タブで
white-space
プロパティを確認 - Console タブでエラーメッセージを確認
視覚的なデバッグ
<style>
/* 改行を視覚化 */
.debug-breaks br {
background-color: red;
padding: 2px;
}
.debug-breaks br::before {
content: "BR";
color: white;
font-size: 8px;
}
</style>
<div class="debug-breaks">
テキスト<br>
改行あり<br>
テキスト
</div>
まとめ
HTMLで改行をするための方法について、基本から応用まで詳しく解説しました。重要なポイントをまとめると:
基本的な改行方法
- 普通の改行:HTMLでは無視される
- br タグ:
<br>
で強制改行 - p タグ:
<p>
で段落分け(前後に余白あり)
特殊な改行テクニック
- pre タグ:
<pre>
で改行・空白をそのまま表示 - CSS white-space:
pre-wrap
,pre-line
などで細かい制御 - wbr タグ:
<wbr>
で改行位置の候補を指定
適切な使い分けの指針
- 段落の区切り:意味のまとまりで
<p>
を使用 - 行内の改行:住所や連絡先など関連情報は
<br>
- コードや詩:書式保持が重要な場合は
<pre>
- レスポンシブ:画面サイズに応じて CSS で制御
注意すべきポイント
- アクセシビリティ:スクリーンリーダーでの読み上げを考慮
- セマンティック:見た目だけでなく意味に基づいた選択
- 保守性:CSS での一元管理を活用
コメント