CSS2の時代からある場合分けとしては、[1]と[2]の2つでした。
display: flex;
が使えるようになって[3]の選択肢が増えました。
display: flex;
をまだ触ったことがなければ、まずは[1]と[2]の違いから把握してください。
[1] 文字やインライン要素を中央揃えにする方法
左右中央揃えにしたい対象: display: inline、display: inline-block
CSSを指定する要素: 親要素
文字の中央寄せ、中央揃えにする目的で使用します。
背景色をつけた場合、背景色は横幅いっぱいで、その中の文字だけ中央に配置されている、という見た目になります。
HTML
1<p class="parent">
2 <span class="child">ああああ</span>
3</p>
CSS
1p.parent {
2 text-align: center;
3}
[2] 要素を左右中央配置する方法1
左右中央配置にしたい対象: display: block;
CSSを指定する要素: 対象自身 (=親要素は関係ない)
文字は中央揃えにはなりません。左揃えのままです。
背景色をつけてみるとわかりやすいですが、背景色のある領域が、左右中央に配置されます。
HTML
1<div class="parent">
2 <div class="child">ああああ</div>
3</div>
CSS
1.child {
2 margin: 0 auto; /* 左右中央配置 */
3 width: 200px; /* display: block;の要素を中央配置する場合、widthの指定が必要 */
4}
[3] 要素を左右中央配置する方法2
左右中央配置にしたい対象: なんでも
CSSを指定する要素: 親要素
[2]よりも、横幅を指定しなくても使えるといった点で便利なので、最近はよく使用されています。
HTML
1<div class="parent">
2 <div class="child">ああああ</div>
3</div>
CSS
1.parent {
2 display: flex;
3 justify-content: center;
4}