LoginSignup
16
5

More than 1 year has passed since last update.

text-alignが効かない!vertical-alignが効かない!

Posted at

はじめに

text-alignvertical-align を指定しているのにうまく効かなくて困ったことはありませんか?

text-align: center; は水平方向に中央寄せしてくれるもの」
vertical-align: middle; は垂直方向に中央寄せしてくれるもの」

最初にこう覚えてしまったことがすべての元凶です。
これから新人が入ってきて「うまく効いてくれないんですけどなんでですか?(;o;)」と質問されるかもしれません。そんな事態に備えて、なぜ効かないのか、何を確認したら良いのかをちゃんと説明できるようになっておきましょう!

text-align とは

ブロック要素に指定して、要素内のインライン要素の位置を水平方向に変えるもの」です。
CSS: カスケーディングスタイルシート

text-align が効かない理由

1. ブロック要素に指定していないから

divp などのブロック要素に指定しているかを確認してください。

2.子要素に指定しているから

位置を決める要素自体ではなく、その親要素に指定してください。
指定する要素と位置が決まる要素が異なることを覚えておきましょう。

3. 位置を決める要素がブロック要素だから

text-align はインライン要素の位置を決めるものなので、いくらブロック要素である親要素に指定していたとしても肝心の位置を決める要素がブロック要素だと効きません。
ブロック要素自体を中央寄せにするには、margin: 0 auto; を使ってください。

vertical-align とは

インライン要素同士を垂直方向に整列するもの」です。
CSS: カスケーディングスタイルシート

vertical-align が効かない理由

1. ブロック要素に指定しているから

vertical-alignインライン要素とtableのセル要素に使えるものです。
ブロック要素に指定していても効きません。
インライン要素でもfloatがかかっていたり、position: absolute; がかかっていると効かないので注意しましょう。

2. 親要素に指定しているから

子要素に継承されないため、位置を決める要素自体に指定します。

つぶやき

こう見るとこの2つってかなり紛らわしいですよねぇ〜。

参考

CSS「text-align」を理解【効かない場合の対処方法】
CSS text-align:centerが効かない原因と対処法
vertical-alignが効かない人は多分勘違いしている
vertical-alignが効かない時

16
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
5