https://css-tricks.com/centering-css-com... から翻訳しました
オリジナルの作者のコードを Github リポジトリに整理し、CSS センタリングの使用方法を更新し続けます。 Fork を歓迎し、私のプロジェクト css-center-complete にスターを付けてください。
CSS で要素を中央に配置する方法について、人々は常に不満を言います。なぜそんなに難しいのでしょうか?はは(この言葉を使ったこれより良い翻訳はありません)。問題は、それがどれだけ難しいかではなく、さまざまなシナリオで中心に置く方法がたくさんあり、どれを使用するかを決定するのが難しいことだと思います。
そこで、使いやすくしたいと考えて、これらの選択をツリーの形にしました。
次のように、ブロック レベルの要素内でインライン要素を中央に配置できます:
.center-children { text-align: center;}
コード リンク
このメソッドは、inline、inline-block、inline-table、inline-Elements の表示属性に機能します。 flexなどはどれも便利です。
ブロックレベル要素の場合、マージン属性を auto に設定することでセンタリング効果を実現できます。幅を設定することが前提です。幅が設定されていない場合、デフォルトは 100% であり、中央揃えにする必要はありません。次のようになります:
.center-me { margin: 0 auto;}
コードリンク
2 つ以上のブロックレベル要素を連続して中央に配置する必要がある場合は、その表示属性を inline-block に設定するのが最善です。次の例では、フレックスボックス内で display: inline-block; を設定します。
コード リンク
複数のブロックレベルの要素を互いに重ね合わせたい場合を除き、amrgin: 0 auto ;Also;
コードリンク垂直中央
.link { padding-top: 30px; padding-bottom: 30px;}
.center-text-trick { height: 100px; line-height: 100px; white-space: nowrap;}
コードリンク
2. テーブルのような要素の中央揃えが機能しない場合は、フレックスボックスの使用を検討する必要がありますか?フレックスボックスの子要素をフレックスボックスの親要素内で中央に配置するのは簡単すぎます。
.flex-center-vertically { display: flex; justify-content: center; flex-direction: column; height: 400px;}
3. 前の 2 つの方法が機能しない場合は、ゴースト要素の方法を使用できます。テキストが中央に配置されるように、高さ 100% の疑似要素を包含ブロック内に配置します。
.ghost-center { position: relative;}.ghost-center::before { content: " "; display: inline-block; height: 100%; width: 1%; vertical-align: middle;}.ghost-center p { display: inline-block; vertical-align: middle;}
ブロックレベルの要素
.parent { position: relative;}.child { position: absolute; top: 50%; height: 100px; margin-top: -50px; /* 如果没有使用border-box的话就只需要关心padding和border了 */}
要素の高さがわからない
.parent { position: relative;}.child { position: absolute; top: 50%; transform: translateY(-50%);}
フレックスボックスを検討していますか?
.parent { display: flex; flex-direction: column; justify-content: center;}
水平方向と垂直方向の中央揃え
要素の幅と高さが固定かどうか
.parent { position: relative;}.child { width: 300px; height: 100px; padding: 20px; position: absolute; top: 50%; left: 50%; margin: -70px 0 0 -170px;}
要素の幅と高さがわからないですか?
.parent { position: relative;}.child { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);}
flexbox
rrree
コードリンク概要