margin:autoが反映されない時の対処法
初めまして。未来電子テクノロジーでインターンをしている(2020年1月退社)maec_lamarです。
今回から週に1回のペースでプログラミングについて学んだことを書いていきたいと思いますので、よろしくお願いします。
なお、プログラミング初心者であるため、内容に誤りがあるかもしれません。
もし、誤りがあれば修正するのでどんどん指摘してください。
初回は、CSSでmargin:auto
を使っているのに要素の中央揃えができないという時、どのように対処すれば良いかについて僕なりに説明したいと思います。
margin:autoが効かない原因と対処法
margin
とは、要素の周りに指定した幅の余白を作るように要素のサイズを変える、CSSのプロパティです。
そして、値auto
を使ってmargin:auto
とすると、要素が親要素内の中央に来るように要素を移動させることができます。
しかし、そのmargin:auto
が反映されないということが起きます。
その原因として、次のようなことが挙げられます。
原因1:テキストの中央揃えに使っている
<p>Qiita</p>
p {margin:auto;}
margin:auto
は要素の中央揃えに使うので、上のようにしてテキストの中央揃えには使えません。
テキストの中央揃えには、下のようにプロパティtext-align:center
を使います。
<p>Qiita</p>
p {text-align:center;}
原因2:要素が親要素と同じ大きさである
<ul>
<li>Qiita</li>
<li>maec_lamar</li>
</ul>
ul{margin:auto;}
上のように、そのままmargin:auto
を用いても、リストを中央に持っていくことはできません。
一度、border
プロパティなどを用いて要素を可視化してみましょう(Chromeをお使いの方は検証ツールを使うのも手です)。
すると、リスト要素の横幅がすでに画面一杯に広がっているので、要素の動かしようがありません。
この時は、下のように、まずリスト要素の大きさを、width
を用いてリストの大きさに合わせた上でmargin:auto
を使えばリストを中央に持ってくることができます。
ul{
width:100px;
margin:auto;
}
まとめ
今回は、margin:auto
が使えない時の対処法について説明しました。
まずはmargin:auto
とtext-align:center
の違いを理解することが大切です。
また、margin
が反映されない時、一度border
などを用いて要素を視覚化すると、原因が分かるようになることがあります。
CSSで中央揃えができないという方は参考にしてみてはいかがでしょうか。