他人のHTMLファイルを開いて、絡み合ったタグの壁に完全に迷い込んだ経験があるなら、インデントがなぜ重要なのかは既に理解しているはずです。HTMLのインデント方法を学ぶことは、単にコードを書くだけの開発者と、読みやすいコードを書く開発者を分ける最初の習慣の一つです。.
このガイドでは、適切なコードレベルのインデントを使用してHTMLドキュメントを構成する方法と、CSSプロパティを使用してWebページ上のテキストを視覚的にインデントする方法の両方について説明します。.
要約:HTMLにおけるインデント
- HTMLのインデントは、エディタ内のコード構造とレンダリングされたページ上の視覚的なテキストインデントの2つのレベルで機能します。
- コードレベルのインデントには、ネストレベルごとに2つのスペースを使用し、ファイル全体で一貫性を保ってください。
- テキストの視覚的なインデントには、最初の行のみにtext-indentを使用し、ブロック全体をオフセットするにはmargin-leftを、スタイル付きコンテナ内のインデントにはpadding-leftを使用します。
- 絶対に使用しないでください<blockquote>視覚的なインデントを作成するため
- VS Code の組み込みフォーマッターまたは Prettier を使用して、チーム全体でインデントを自動化します。
HTMLにおける適切なインデントが重要な理由とは?
章立ても段落分けもなく、文と文の間に空白もない本を読むことを想像してみてください。インデントされていない HTMLは 、それを扱わなければならない開発者にとって、まさにそのような状態に見えるのです。

適切なインデントによって、要素間の親子関係が一目でわかります。閉じタグの欠落もすぐに発見できるため、デバッグ作業も迅速化されます。.
また、チームに加わる新しい開発者が貢献する前にコード構造を解読するのに1時間も費やす必要がないため、コラボレーションがはるかに楽になります。.
読みやすさだけでなく、 検索エンジンの クローラーはHTMLを解析してページ構造を理解します。クリーンで構造化されたHTMLは、クローラーがコンテンツの階層構造を正確に解釈するのに役立ち、間接的にSEOパフォーマンスの向上につながります。
クリーンなコードはより良いウェブサイトを構築する
セマンティックHTMLから拡張性の高いWordPress開発まで、お客様のビジネスの成長に合わせて、クリーンで高速、かつメンテナンスが容易なウェブサイトを構築します。.
知っておくべき2種類のHTMLインデント
テクニックに入る前に、多くの初心者がつまずく混乱を解消しておく価値があります。「HTMLのインデント」と言うとき、人々が意味するところは大きく分けて2つあります。
- コードレベルのインデント とは、コードエディタ内でHTMLタグがどのように配置されるかを示すものです。これはウェブサイト上でユーザーに表示される内容には影響しません。その目的は、要素の階層構造を視覚的に表現することで、コードの可読性を高めることです。
- ビジュアルテキストインデントと は、レンダリングされたウェブページ上のコンテンツをインデントして、ユーザーがページ上で実際のインデントを確認できるようにすることです。これはCSSプロパティによって制御されます。これら2つを混同すると、開発者は次のような要素を誤用することになります。
エディタでHTMLコードをインデントする方法は?
コードエディタは、適切なインデント習慣を身につける出発点です。最初から正しい設定をしておくことで、後々のデバッグや再フォーマットに費やす時間を大幅に節約できます。.
親子関係の構造を理解する
HTMLは階層構造を持つ言語です。ある要素が別の要素の中に含まれる場合、それは親要素の子要素となります。この関係性をコード内で明確にするために、子要素は常に親要素よりも一段階深くインデントする必要があります。.
以下は、インデントされていないHTMLの例です。動作はしますが、読みづらいです。
<div><h1>ページタイトル</h1><p>これは段落です。</p><ul><li>アイテム1</li><li>項目2</li></ul></div>
以下は、適切なインデントを適用した同じHTMLです。
<div><h1>ページタイトル</h1><p>これは段落です。</p><ul><li>アイテム1</li><li>項目2</li></ul></div>
構造はすぐに明らかになる。<h1> 、<p> 、 そして<ul>すべては<div>.<li>要素は、<ul>ネストの各レベルは、常に同じ量だけインデントされます。.
スペース2つ、スペース4つ、それともタブ?
具体的な選択よりも、一貫性の方がはるかに重要です。ほとんどのHTMLスタイルガイドでは、インデントレベルごとに2つのスペースをデフォルトとしています。これは、HTMLが深くネストされるため、4つのスペースを使うとコードがすぐに右端に押しやられてしまうからです。.
最も重要なのは、1つのスタイルを選び、プロジェクト全体を通してそれを使用することです。一部のファイルではスペースを2つ、他のファイルでは4つ使用するなど、スタイルを混在させると、バージョン管理の差分が乱雑になり、チーム環境で摩擦が生じます。.
VS Code を使用してインデントを自動化する
VS Codeは、 インデントを標準で非常に適切に処理します。HTMLを記述し、開始タグの後にEnterキーを押すと、VS Codeは自動的に次の行をインデントします。インデントが不整合な既存のファイルを開いた場合でも、ドキュメント全体を一度に修正できます。
- Windowsでは、Shift + Alt + Fキーを押すと、文書全体をフォーマットできます。.
- Macでは、Shift + Option + Fを押します。.
チームの場合、Prettier拡張機能は、共有の.prettierrc設定ファイルを通じて、すべての開発者のエディタでインデントルールを強制します。これにより、インデントに関連するマージの競合やコードレビューの摩擦が完全に解消されます。.
HTMLでCSSを使ってテキストをインデントする方法は?
さて、ここからはユーザーが実際に目にする内容に影響を与える部分、つまりウェブページ上のテキストの視覚的なインデントについて説明します。使用する主なCSSプロパティは3つあり、それぞれ動作が異なります。.
CSSのtext-indentプロパティ
text-indentプロパティは、テキストブロックの最初の行のみをインデントします。これは、段落や見出しなどのブロックレベル要素に適用されます。同じ要素内の後続の行は、通常の余白のままです。.
p { text-indent: 30px; }
これは、各段落の最初の行を30ピクセルインデントします。レイアウトに応じて、異なる単位を使用することもできます。ピクセル単位を使用すると、絶対的な固定インデントが適用されます。.
emまたはremを使用すると、インデントがフォントサイズに連動し、さまざまな 画面サイズ。パーセント値を使用すると、インデントは包含するブロックの幅に比例します。
p { text-indent: 2em; }
負の値を使用すると、ぶら下げインデント効果を作成できます。この場合、最初の行は左側に突き出し、残りの行はインデントされます。
p { text-indent: -2em; padding-left: 2em; }
text-indent のブラウザ互換性は、最新のブラウザすべてにおいて優れています。ベンダープレフィックスは不要です。.
マージン左プロパティ
margin-leftプロパティは、要素全体を右にずらすことで、コンテンツブロック全体をインデントします。これは、段落、セクション、またはコンテナ全体を、開始行だけでなくオフセットしたい場合に便利です。.
.indented-section { margin-left: 40px; }
margin-leftプロパティは、ほぼすべてのHTML要素で機能します。.
注意すべき点として、 マージンは要素のボックスの外側にスペースを作成するため、要素自体が移動し、要素内のテキストだけが移動するわけではありません。これは、 グリッドレイアウト レイアウトシステムによって既に間隔が管理されている
padding-left プロパティ
padding-leftプロパティは、要素のコンテンツボックス内に、境界線とコンテンツの間にスペースを作成します。これがmargin-leftとの重要な違いです。.
.callout-box { padding-left: 24px; background-color: #f5f5f5; border-left: 4px solid #0057ff; }
ここで padding-left の代わりに margin-left を使用すると、テキストはインデントされますが、背景 色 と境界線が元の左端から始まってしまい、見栄えが悪くなります。
padding-leftプロパティは、スタイルが適用されたコンテナの形状を維持したまま、テキストを内側に移動させます。背景、境界線、または定義済みのボックスモデルを持つコンテナ内でテキストをインデントする場合に使用します。.
HTMLリストとネストされた要素のインデント
HTMLリストにはブラウザによってデフォルトでインデントが適用されますが、その量はChrome、Firefox、Safariで異なります。一貫性のある制御された結果を得るには、CSSで明示的に定義してください。
ul, ol { padding-left: 24px; }
ネストされたリストの場合、ネストされた要素にさらにインデントを追加して、明確な第2レベルを作成します。
<ul><li>メインアイテム<ul><li>ネストされたアイテム A</li><li>ネストされたアイテム B</li></ul></li></ul>
各階層のpadding-leftをCSSで制御することで、どのブラウザでも一貫性のある、すっきりとした2階層のインデント付きリストを作成できます。.
インデントをネイティブに処理するHTML要素
HTML要素の中には、ブラウザにインデント機能が組み込まれているものがあります。それらを正しく使用すべき時とそうでない時を理解することで、コードのアクセシビリティと意味的な整合性を保つことができます。.
- 、blockquote要素は デフォルトでインデントされて表示されます。多くの開発者はこの視覚効果だけを目的としてこれを誤用していますが、これは間違いです。
の<blockquote>`<input type="text">` 要素は、外部ソースから引用したコンテンツをマークアップするために存在します。スクリーンリーダーはこれを引用として読み上げるため、引用されていないコンテンツに使用すると、支援技術を利用するユーザーを誤解させる可能性があります。`<input type="text">` は実際の引用にのみ使用し、それ以外のコンテンツには CSS を使用してください。.
- pre要素は、 HTMLファイル内の空白、改行、インデントをすべてそのまま保持します。そのため、間隔が重要な意味を持つコードスニペットや整形済みテキストを表示するのに不可欠です。
- 改行禁止スペース ( )は、初心者が手軽にインデントを作成する際によく使う習慣です。しかし、この目的では決して使用すべきではありません。改行禁止スペースはスケーリングに対応しておらず、画面幅によって改行され、小さな画面では予期せぬ改行が発生します。常にCSSを使用してください。
避けるべきよくあるインデントの間違い
同じファイル内でタブとスペースを混在させるのは、チームレベルでよくあるミスです。あるエディタでは問題なく表示されても、別のエディタでは全く表示されなくなります。エディタの設定でタブを自動的にスペースに変換するようにするか、Prettierなどのツールを使って一貫したスタイルを適用しましょう。.
再利用可能なCSSクラスではなく、個々の要素すべてにインラインスタイルを使用すると、メンテナンスが非常に困難になります。.
HTML内の20個の異なる段落タグにわたってstyle="margin-left: 40px"を更新するのは面倒な作業ですが、1つのCSSクラスがあれば完全に不要になります。.
エディタで行が折り返されるほど深くインデントされている場合は、HTML構造自体を簡素化する必要があることを示しています。単に書式を整えるだけでは不十分です。コードが頻繁に10階層、12階層もの深さになる場合は、構造そのものを見直す価値があります。.
アクセシビリティとインデント
これはほとんどのガイドでは省略されている点です。コードレベルのインデントを正しく行うことは、支援技術がページをどれだけ正確に解析できるかに直接影響します。.
- 要素が正しくネストされ、HTMLの階層構造が整然としていれば、スクリーンリーダーはランドマーク、見出し、コンテンツ領域を正確に識別できます。.
- 要素が視覚的な副作用を目的として誤用されると、スクリーンリーダーはユーザーに誤った文脈を読み上げてしまう。.
などのツールを使用してHTMLの意味的な正しさを監査することがはるかに容易になります WAVE や axe DevTools。
最後に
HTMLのインデントをきちんと整えることは、かかるコストをはるかに上回るメリットをもたらす習慣の一つです。.
プロジェクトを適切にフォーマットするために費やした時間は、デバッグするたび、新しい開発者がファイルを開くたび、そして数か月後に自分のコードを見返してもすぐに理解できるたびに、必ず報われます。.
Seahawk Mediaでは、 ウェブサイトの構築と監査を コードの品質がパフォーマンス、保守性、ユーザーエクスペリエンスに直接影響を与える
ウェブサイトのコード監査、パフォーマンスレビュー、または完全な開発構築が必要な場合は ぜひ当社にご連絡ください。画面上の見た目と同じくらい、内部構造も優れたウェブサイトを構築いたします。
よくある質問
HTMLのインデントは、ウェブページのユーザー表示に影響を与えますか?
HTMLファイル内のコードレベルのインデントは、レンダリングされた出力には一切影響しません。これは、エディタでのコードの表示方法にのみ影響します。実際のウェブページ上の視覚的なインデントは、text-indent、margin-left、padding-leftなどのCSSプロパティによって制御されます。.
インデントにおけるmargin-leftとpadding-leftの違いは何ですか?
margin-leftプロパティは要素のボックスの外側にスペースを作成し、要素全体を右に移動させます。padding-leftプロパティは要素のボックスの内側にスペースを作成し、コンテンツを要素の左端から遠ざけます。.
要素の背景色や境界線が外縁に沿って配置される必要がある場合は、padding-left を使用してください。.
HTMLのインデントにはタブとスペースのどちらを使うべきですか?
ほとんどのHTMLスタイルガイドではスペースの使用が推奨されており、特にHTMLでは2つのスペースが最も一般的な標準となっています。最も重要なのは、ファイル全体およびチーム全体で一貫性を保つことです。Prettierを使用すれば、選択したスタイルを自動的に適用できます。.
HTMLでインデントに改行なしスペースを使用しても問題ありませんか?
いいえ。文字を使ってインデントを作成するのは好ましくありません。スケーリングに対応せず、アクセシビリティの問題を引き起こし、画面幅によって表示が崩れてしまいます。レンダリングされたウェブページにインデントを表示させる必要がある場合は、必ずCSSプロパティを使用してください。.