HTMLで右寄せ・中央寄せ・左寄せをする方法【初心者向け】現役エンジニアが解説

初心者向けにHTMLで右寄せ・中央寄せ・左寄せの指定方法を解説しています。テーブル作成の際などに役立つ知識なので、実際にソースコードを書きながら慣れていきましょう。align属性を使って説明しています。

TechAcademyマガジンは受講者数No.1のオンラインプログラミングスクールTechAcademy [テックアカデミー]が運営。初心者向けに解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。

この記事では、Webページ制作の際に、要素の右寄せ・中央寄せ・左寄せを実現するHTML/CSSの記述方法をみていきます。

以下のような悩みや疑問を持っている方は、記事を読むことで解決できるでしょう。

  • 要素の位置をどのようにコントロールするのかわからない
  • 中央寄せしてみたつもりが、うまくいかない

そもそもHTMLの記述方法がわからない場合は、HTMLの書き方について解説した記事を読むとさらに理解が深まります。

 

目次

本記事は、テックアカデミーのWebデザインコースのカリキュラムをもとに執筆しています。

 

田島悠介

今回は、HTMLに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

右寄せ・中央寄せ・左寄せをする方法について詳しく説明していくね!

大石ゆかり

お願いします!

 

ブロック要素・インライン要素

HTMLの要素には、ブロック要素とインライン要素の2種類があります。

ブロック要素は見出しなど、文章の区切りを表すものです。

  • divタグ
  • pタグ
  • h1タグ

インライン要素は、以下のように文章要素を表すものです。

  • aタグ
  • imgタグ
  • spanタグ

対して、CSSではインライン要素とブロック要素を付け替えたり、両方の特徴を持ったインラインブロック要素にすることもできます。

HTMLとCSSでは、右寄せ・中央寄せ・左寄せの手法や、ブロック要素とインライン要素の手法が異なる点を把握する必要があります。

設定する際は要素がブロック要素なのか、インライン要素なのか把握しましょう。

 

[PR] HTML/CSSで挫折しない学習方法を動画で公開中

インライン要素の表示位置 text-align

インライン要素の右寄せ・中央寄せ・左寄せの指定する場合、text-alignを使います。

使い方はインライン要素を囲っている親要素に対して、インライン要素を左右中央のどの位置に表示するか指定しましょう。

 

下記HTMLの例では、インライン要素であるimgタグを親要素divの中で左右中央に配置しています。

<div class="left">
     <img src="image.jpg">
</div>
<div class="center">
     <img src="image.jpg">
</div>
<div class="right">
     <img src="image.jpg">
</div>

背景が水色になっている箇所が親のdiv要素の領域です。

 

親要素の領域の中で、インライン要素を左右中央どこに表示するかを、親要素にtext-alignというCSSを付与し指定します。

div.left {
    text-align: left; 
}
div.center {
    text-align: center; 
}
div.right {
    text-align: right; 
}

leftは左寄せ、centerは中央、rightは右寄せです。

例えば、中央揃えをしたい場合はどの領域において中央にしたいのか、というのを意識しましょう。

 

ブロック要素の表示位置は左右マージンを使用する

ブロック要素の右寄せ・中央寄せ・左寄せの指定をするには、左右のマージンを使います。

注意点としてtext-alignは使用しないことを把握しておきましょう。

ブロック要素に幅を指定して、左右の余白を設定していくイメージです。

 

以下のHTMLを具体例として見ていきましょう。

<div class="background left">
    <div class="inner">LEFT</div>
</div>
<div class="background center">
    <div class="inner">CENTER</div>
</div>
<div class="background right">
    <div class="inner">RIGHT</div>
</div>

 

以下では、クラスbackgroundの中でクラスinnnerの表示位置を指定しています。

しかし、うまく動作しません。

.background{
    background:gray;
    margin: 1rem;
}
.inner{
    width: 30%;
    background:red;
}
.background.left{
    text-align:left;
}
.background.center{
    text-align:center;
}
.background.right{
    text-align:right;
}

灰色の部分がbackground、赤い部分はinnerです。

backgroundの中でinnerの位置を設定したはずですが、innerの中で文字の位置が変わっている状態です。

div要素がブロック要素であるため、インライン要素向けのtext-alignを使っても機能しないからです。

 

以下のプログラムでは、ブロック要素の手法として、左右マージンを使って設定していきます。

左右中央寄せをしたときに余白をつける方向を意識し、余白がある方向にmargin:autoを指定します。

左寄せの場合はmargin-right、中央の場合はmargin-leftとmargin-right 、右寄せの場合はmargin-leftを使用しましょう。

.background{
    background:gray;
    margin: 1rem;
}
.inner{
    width: 30%;
    background:red;
}

.left.inner{
    margin-right: auto;
}
.center.inner{
    margin-right: auto;
    margin-left: auto;
}
.right.inner{
    margin-left: auto;
}

無事に灰色のbackgroundの中で、赤色のinnerの表示位置を指定できました。

marginを使って左右中央寄せをする場合は、必ずwidthを親要素より小さい幅で指定する必要があります。

また、text-alignは親要素backgroundに指定していました。

しかし、maringはinner要素自体に指定するため注意しましょう。

この2つの方法を使いこなせれば、どんな要素でも左右中央寄せが可能です。

 

また、フレックスボックスと呼ばれるdisplay:flexを使う手法でも、左右中央寄せが可能です。

フレックスボックスとは、いくつかの要素を囲っている親要素に指定して、その中の要素の表示位置や並び順を指定するCSSです。

オプションプロパティを駆使した場合、表示位置や並び順を細かく設定できるだけでなく、左右中央寄せに関しても表示可能です。

 

実際に書いてみよう

このプログラムでは「align.html」を作成した上で、以下の記述を行います。

align.html
------------------------------------------------------------------------
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
  </head>
  <body>
    <table border="1" width="500px">
    <tbody>
      <tr><td align="right">align="right"を指定すると右寄せです。</td></tr>
      <tr><td align="center">align="center"を指定すると中央寄せです。</td></tr>
      <tr><td align="left">align="left"を指定すると左寄せです。</td></tr>
    </tbody>
    </table>
  </body>
</html> 
------------------------------------------------------------------------

 

ブラウザで開いた場合は、以下のように表示されます。

 

大石ゆかり

要素の右寄せ・中央寄せ・左寄せを実現するHTML/CSSの記述方法がよく分かったので良かったです!

田島悠介

ゆかりちゃん、これからも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

 

執筆してくれたメンター

田屋 貴祥

最新テクノロジーを広めるという情熱を持ちクラウドベンダーでセールスエンジニアに従事。

その後、フリーランスWeb制作をしながら、海外で人生の楽しみ方を学ぶ。

海外のWeb制作Tipsを翻訳し実践するTechブログ制作中。

https://webcreate.bokutachino.world/

最近のマイトレンドはCSS3で脱JavaScript。

HTMLを学習中の方へ

これで解説は終了です、お疲れさまでした。

  • つまずかず「効率的に」学びたい
  • 副業や転職後の「現場で使える」知識やスキルを身につけたい

HTMLを学習していて、このように思ったことはありませんか?

テックアカデミーのWebデザインコースでは、第一線で活躍する「プロのWebデザイナー」が教えているので、効率的に実践的なスキルを完全オンラインでしっかり習得できます。

合格率10%の選考を通過した、選ばれたWebデザイナーの手厚いサポートを受けながら、オリジナルのWebサイト制作を完全オンラインでしっかり習得できます。

まずは一度、無料体験で学習の悩みや今後のキャリアについて話してみて、「現役Webデザイナーから教わること」を実感してみてください。

時間がない方、深く知ってから体験してみたい方は、今スグ見られる説明動画から先に視聴することをおすすめします!