前回のインタビューでインタビュアーが固定幅と可変幅について質問したので、関連するCSSのセンタリングについてまとめてみました
原文は私のフロントエンドブログから抜粋したものです、どなたでもご覧ください
http://www.hacke2.cn
水平方向の中央揃えDIV 内でインライン要素をネストし、DIV 内で次のスタイルを設定します
a{ text-align: center; }
固定幅ブロックの場合要素の場合、margin-top と margin-right を auto に設定する必要があります
.center{ margin: 0 auto; }
複数のブロックレベル要素の場合、表示を inline-block に設定します。次に、親要素の属性を設定します
div{ text-align: center; }
水平方向の中央に配置する必要があるブロック要素の親要素の表示をフレックスに設定し、justify-content 属性を中央に設定します
body{ display: flex; justify-content: center; }
インライン要素の高さと行の高さを一貫して設定します
a{ height: 200px; line-height:200px; }
インライン要素が多すぎて複数行が表示されない場合生成され、親要素の表示を設定します: table-cell;vertical-align:middle;
.container{ width: 300px; height: 300px; display: table-cell; vertical-align:middle; }
ブロックレベル要素の絶対位置を設定し、上から 50%、マージン - top:-height/2
div{ height: 100px; position: absolute; top: 50%; margin-top: -50px; padding:0; }
CSS 変換を使用し、ブロックレベル要素を絶対位置に設定し、上部は 50%、transform:translateY(-50%);
div{ position: absolute; top: 50%; transform: translateY(-50%); padding:0; }
div{ width: 150px; height: 150px; position: absolute; top: 50%; left: 50%; margin-top: -75px; margin-left: -75px; }
高さと幅がわかっている要素 (flex )
div{ display: flex; justify-content:center; align-items: center; }
高さと幅が不明な要素
div{ position:absolute; top:50%; left:50%; -webkit-transform:translate(-50%,-50%); -moz-transform:translate(-50%,-50%); transform:translate(-50%,-50%); }