CSSのvertical-alignプロパティの使い方を解説!効かない時の原因と対処法も

2024.01.06
CSSのvertical-alignプロパティの使い方を解説

画像やテキストの垂直方向の位置を調整できる「vertical-align」プロパティ。

「HTML要素を上下中央に揃えたい」

などという時に便利なプロパティです。

しかし、なんとなく知っているけど、詳しい特徴や使い方は知らないという方も多いでしょう。

そこで今回は、vertical-alignプロパティの特徴や使い方について詳しく解説します。

この記事を読んでわかる内容は、以下の通りです。

  • vertical-alignについての基礎知識
  • text-alignプロパティの使い方
  • vertical-alignが効かない時の原因と対処法2つ
  • 中央揃えを指定できるプロパティの使い方

「vertical-alignプロパティを指定したのになぜか効かない…」

というトラブルに悩まされている方のための解決策も解説しています。

vertical-alignを使いこなせるようになりたいという方は、ぜひ最後まで見てくださいね。

vertical-alignとは?

vertical-alignは、垂直方向の配置を設定できるプロパティ。

「vertical」は垂直線・垂直位置、「align」は並べる・整列させるという意味があります。

左右方向の配置を設定できるtext-alignプロパティのように、決められた方向の位置を調整することができるプロパティなのです。

ChromeやSafari、IEなど、ほぼ全てのブラウザで対応可能。

vertical-alignは、主に、画像やテキストなどの位置をボックス内の上下中央に揃えるなど、要素のレイアウトを見やすくする目的として利用されています。

vertical-alignで指定できる値

vertical-alignで指定できる値は、以下の6つ。

  • top:行全体の上端に要素と子孫要素の上端を揃える
  • text-top:親要素のフォントの下端に要素の下端を揃える
  • middle:親要素の baseline + x-height の半分に要素の中央を揃える
  • baseline:親要素のベースラインに要素のベースラインを揃える
  • text-bottom:親要素のフォントの下端に要素の下端を揃える
  • bottom:行全体の下端に要素と子孫要素の下端を揃える

上下中央揃えにしたい場合には、middleを指定します。

上記の他にも、pxやem、%など、数値で指定することも可能です。

vertical-alignを使う時の注意点

vertical-alignは、display:blockの要素には指定することができません。

inline、または、table-cellにのみ指定することができます。

ただし、text-topやtext-bottomは、table-cellにも指定することができないので注意しましょう。

実際にvertical-alignを使ってみよう!

では、実際にvertical-alignを使って、どのようにテキストが表示されるのか見てみましょう。

<!-- HTMLコード -->
<div class="content">
  <p>一行<span class="top">vertical-align:top</span></p>
  <p>一行<span class="text-top">vertical-align:text-top</span></p>
  <p>一行<span class="middle">vertical-align:middle</span></p>
  <p>一行<span class="baseline">vertical-align:baseline</span></p>
  <p>一行<span class="text-bottom">vertical-align:text-bottom</span></p>
  <p>一行<span class="bottom">vertical-align:bottom</span></p>
</div>
/* CSSコード */
.content p {
  background-color: #ccc;
  font-size: 40px;
  margin: 10px 0;
}

.content p span {
  font-size: 20px;
  background-color: #fff;
}

.top {
  vertical-align: top;
}

.text-top {
  vertical-align: text-top;
}

.middle {
  vertical-align: middle;
}

.baseline {
  vertical-align: baseline;
}

.text-bottom {
  vertical-align: text-bottom;
}

.bottom {
  vertical-align: bottom;
}

▼ブラウザ表示▼

ブラウザ表示

左・右・左右中央揃えにはtext-alignプロパティを使用する

「上下中央だけでなく、左右中央にも揃えたい!」という場合には、以下のようにtext-alignプロパティを使用します。

<!-- HTMLコード -->
<div class="content">
  <p>text-alignで左右中央に揃える</p>
</div>
/* CSSコード */
.content {
  background-color: #eee;
  text-align: center;
}

▼ブラウザ表示▼

ブラウザ表示

text-alignプロパティについて、もっと詳しく知りたい場合は、以下の記事が参考になります。

【初心者必見】HTMLの要素や文字を自由自在に操る!右・左・中央に配置する方法を解説

vertical-alignが効かない時の原因と対処法

「vertical-alignが反映されない」

という時には、主に以下のような原因が考えられます。

  1. ブロック要素に指定している
  2. 仕組みを勘違いしている

では、それぞれについて詳しく見ていきましょう。

1.display:blockの要素に指定している

vertical-alignを使う時の注意点でも紹介した注意点の一つ。

vertical-alignは、blockの要素には指定することができないため、誤って指定しても反映されません。

blockが指定されている要素には、主に、以下のようなものがあります。

div、p、ul、ol、h1~h6、form…

blockの要素にvertical-alignを指定したい場合は、以下のような対策をとりましょう。

display: inline-blockを指定する

<!-- HTMLコード -->
<div class="block">
  <div class="block1">
    <p>blockの要素にvertical-alignを指定する</p>
  </div>
  <div class="block2">
    <p>blockの要素にvertical-alignを指定する</p>
  </div>
</div>
/* CSSコード */
.block1 {
  height: 180px;
  background-color: #eee;
  display: inline-block;
  vertical-align: middle;
}

.block2{
  background-color: #eee;
  display: inline-block;
  vertical-align: middle;
}

▼ブラウザ表示▼

ブラウザ表示

display: table-cellを指定する

<!-- HTMLコード -->

<div class="block">
  <p>blockの要素にvertical-alignを指定する</p>
</div>
/* CSSコード */
.block {
  height: 180px;
  background-color: #eee;
  display: table-cell;
  vertical-align: middle;
}

▼ブラウザ表示▼

2.仕組みを勘違いしている

vertical-alignには、兄弟要素の整列に対してのみ反映するという特徴があります。

親要素に対して整列されると思われる方が多いですが、親要素に対して揃えることはできません。

例えば、以下のような場合が挙げられます。

<!-- HTMLコード -->
<div class="content">
  <a href="#">vertical-alignの仕組みについて</a>
  <img src="img/test_img.jpg">
  <span>vertical-alignの仕組みを理解しましょう!</span>
</div>

/* CSSコード */
.content {
  height: 800px;
  background-color: #eee;
}

.content img {
  vertical-align: middle;
}

▼ブラウザ表示▼

ブラウザ表示

親要素に対してではなく、親要素の中に入っている各子要素(兄弟要素)が垂直中央揃えになっているのがわかるでしょう。

vertical-align以外で中央揃えを指定する方法

vertical-alignの他にも、垂直中央にテキストや画像を揃える方法があります。

  1. display:flex
  2. line-height
  3. position:absolute
  4. padding

では、それぞれの方法を解説していきます。

1.display:flex

<!-- HTMLコード -->
<div class="content">
 <p>display:flexで上下中央揃えします</p>
</div>
/* CSSコード */
.content {
 background-color: #eee;
 height: 300px;
 display: flex;
 align-items: center;
}

▼ブラウザ表示▼

ブラウザ表示

2.line-height

<!-- HTMLコード -->
<div class="content">
  <p>line-heightで上下中央揃えします</p>
</div>
/* CSSコード */
.content {
 background-color: #eee;
 height: 300px;
}

.content p {
  line-height: 300px; 
}

▼ブラウザ表示▼

ブラウザ表示

3.position:absolute

<!-- HTMLコード -->

<div class="content">
  <p>position:absoluteで上下中央揃えします</p>
</div>
/* CSSコード */
.content {
 background-color: #eee;
 height: 300px;
 position: relative;
}

.content p {
  position: absolute;
  top: calc(50% - 10px);
}

▼ブラウザ表示▼

ブラウザ表示

4.padding

<!-- HTMLコード -->
<div class="content">
 <p>paddingで上下中央揃えします</p>
</div>
/* CSSコード */
.content {
 background-color: #eee;
 height: 300px;
 padding: 120px 0;
}

▼ブラウザ表示▼

ブラウザ表示

縦軸のレイアウトが自由自在に!vertical-alignプロパティの仕組みと使い方をマスターしよう

今回は、vertical-alignプロパティの特徴や使い方について詳しく解説しました。

以下は、この記事のまとめです。

  • vertical-alignは垂直方向の配置を設定できるプロパティ
  • vertical-alignが効かない時は、blockに指定していないか、親要素で揃えようとしていないか確認
  • 上下左右の配置調整にはdisplay:flexもおすすめ

テキストや画像などを、垂直中央揃えする時などに便利なvertical-alignプロパティ。

text-alignプロパティなどと併用すれば、上下左右中央、つまりど真ん中などにも配置することが可能です。

vertical-alignプロパティを使いこなして、要素の配置をコントロールできるようになりましょう!


プログラミングやパソコンを使って働きたい!

そのように考え、成長しているIT業界への転職を考えている方も増えてきました。

『IT業界に興味はあるけど、よくわからない…』
『パソコンとかそもそも苦手なのに私なんかにできるのかな』
『エンジニアって聞くけど難しそう』

反対にこのような声も聞く事があります。

そう考えている方は、一度ぜひ転職に成功したエンジニアの方のインタビューをご覧ください!

\プログラミングを学んで/
人生を変えた3名

インタビュー記事一覧 >

\プログラミングスクールを比較/

DMM WEBCAMP

COACHTECH

RUNTEQ

DMM WEBCAMP COACHTECH RUNTEQ
目指せる姿 WEBエンジニアへの転職
フリーランスエンジニア WEBエンジニアへの転職
分割払い
補助金 ×
転職保証 × ×
受講期間 12週間〜 3ヶ月〜 5ヶ月〜
特徴 【IT業界の転職を一番に考えたい方向け】
大手DMMが運営のプログラミングスクール
転職成功率98.8%
豊富なキャンペーンや補助金制度あり
【フリーランスを目指したい方向け】
フリーランスのエンジニアを最短で目指す
エンジニアと共に実際の案件開発を担当
【とことん勉強してから転職したい方向け】
1,000時間(約9カ月)のカリキュラムでしっかり勉強
企業の求める即戦力のWEBエンジニアを目指す
料金 329,350円〜
※給付金適用後
42万9,000円~ 55万円

公式HP

公式HP

公式HP

関連記事

資料請求

  • 短期集中で最速エンジニア転職を実現-転職成功者インタビュー一覧

    DMM WEBCAMPでは転職成功率98%を実現しています。本資料では、元警察官や元ラーメン屋など様々なバックグラウンドを持つ卒業生の声をお届けします。

    資料をダウンロードする
  • IT技術がもたらす3つの変化と身につけるべきスキル

    IT技術の発展により、今後10~20年程度で47%の仕事がなくなると言われています。どのような変化が訪れ、私達はどのようなスキルを身につけるべきかを解説します。

    資料をダウンロードする
  • 未経験がフリーランスエンジニアになる方法-年収アップで自由な働き方を手に入れる

    働き方改革やリモートワークの影響でフリーランスという働き方の人気は高まりつつあります。フリーランスエンジニアとして活躍するために必要な情報をお届けします。

    資料をダウンロードする

© 2024 WEBCAMP MEDIA Powered by AFFINGER5