Menu

HTML で文字を中央揃え: text-align、上下中央、字下げ

HTML で文字を中央揃えにするには CSS の text-align: center を使います。どこに指定するか、span では効かない理由、箱の中で文字を上下中央に配置する方法、左右や両端に揃える方法、段落を字下げする方法を解説します。

このページのコードはエディタで実行できます - 編集してすぐに結果を確認できます。

HTML で文字を中央揃えにする方法

テキストを含む要素に CSS の text-align: center プロパティを指定します。

text-align は要素の中のすべての行を中央揃えにし、リンク、画像、ボタンなどのインラインの内容も含まれます。継承されるプロパティなので、コンテナに指定すると中にあるすべての要素のテキストが中央揃えになります。

span ではなくブロックに指定する

text-align が効くのは <p>、<div>、見出し、表のセルなどのブロックコンテナです。<span> や <a> では何も起きません。インライン要素の幅はテキストの分しかなく、中央に寄せる余地がないからです。

直し方は常に同じで、text-align: center を親のブロックに移します。

ブロックは中央、行は左揃え

複数行の段落を完全に中央揃えにすると、行の始まる位置がそれぞれ違うので読みにくくなります。よく使われるのは、ブロックをページの中央に置き、テキストは始まり側に揃えたままにする方法です。

margin-inline: auto は幅のあるブロックを中央に置き、text-align はその中の行を中央揃えにします。flexbox、grid、margin で箱を中央に置く方法は div を中央寄せする方法 のページで解説しています。

文字を上下中央に配置する

text-align が働くのは横方向だけです。箱の中で文字を上下中央に配置するには、箱を flex コンテナにします。

align-items: center は上下の中央、justify-content: center は左右の中央に配置し、行が複数あるときは text-align: center が行同士を中央揃えにします。line-height を使う方法は、高さのわかっている箱に 1 行だけのテキストを置く場合にしか使えません。

text-align の値一覧

値結果
start (初期値)行が始まり側の端から始まる: 英語では左、アラビア語やヘブライ語では右
end行が終わり側の端で終わる
center行が中央揃えになる
justify行が両端に届くように伸びる (最後の行を除く)
left, right言語に関係なく常に左、常に右

left と right より start と end を使いましょう。最後の箱のように、右から左に書く言語では自動的に反転します。

古い center タグ

古いページでは、<center> や align 属性で文字を中央揃えにしています。

<center>Old way</center>
<p align="center">Also old</p>

どちらも廃止されています。古いサイトが崩れないようにブラウザは今も表示しますが、現在の HTML では無効で、マークアップにレイアウトが混ざります。CSS の text-align: center を使いましょう。

文字を字下げする

HTML に字下げのタグはなく、入力した空白はまとめられます (HTML の空白 を参照)。字下げは CSS で行います。

字下げCSS
最初の行だけtext-indent: 2em
ブロック全体padding-inline-start: 2em または margin-inline-start: 2em
ぶら下げ (最初の行だけ外に出す)padding-inline-start: 2em; text-indent: -2em

em を使うと字下げがフォントサイズに連動し、文字の大きさに合わせて変わります。

よくある間違い

  • インライン要素に text-align を指定する。 親のブロックに指定しましょう。
  • text-align で箱が中央に来ると思う。 中央揃えになるのはテキストとインラインの内容で、幅のあるブロックではありません。箱には margin-inline: auto か flexbox を使いましょう。
  • <center> や align="center" を使う。 廃止されています。CSS を使いましょう。
  • 長い段落を中央揃えにする。 中央揃えは見出しや短い行にとどめ、本文は始まり側に揃えましょう。
  • &nbsp; や空白で字下げする。 text-indent か padding を使いましょう。

よくある質問

HTML で文字を中央揃えにするには?

テキストを含む要素に text-align: center を指定します。たとえば <p style="text-align: center"> や、h1 { text-align: center; } のような CSS のルールです。その要素の中にあるすべての行とインラインの内容が中央揃えになります。

span に text-align: center が効かないのはなぜですか?

span はインライン要素なので幅がテキストの分しかなく、中央に寄せる余地がありません。親のブロック (周りの <p> や <div>) に text-align: center を指定するか、span を display: block にします。

文字を上下中央に配置するには?

コンテナを flex ボックスにします: display: flex; align-items: center; (左右も中央にするなら justify-content: center を追加)。高さの決まった箱に 1 行だけなら、高さと同じ line-height を指定する方法も使えます。

<center> タグは今でも使えますか?

使えません。<center> と align="center" 属性は廃止されています。ブラウザは古いページのために今も表示しますが、新しいコードでは CSS の text-align: center を使いましょう。

HTML で文字を字下げするには?

CSS を使います。text-indent: 2em は段落の最初の行を字下げし、padding-inline-start: 2em や margin-inline-start: 2em はブロック全体を字下げします。テキストに空白や &nbsp; を入れる方法では確実に字下げできません。

Coddy programming languages illustration

Coddyでコードを学ぼう

始める