ホームページ > 記事 > ウェブフロントエンド > CSS を完全にセンタリングするための 6 つのベスト プラクティス (整理)_html/css_WEB-ITnose
2016 年 4 月 28 日
1. 最良の方法:
.Absolute-Center { width: 50%; height: 50%; overflow: auto; margin: auto; position: absolute; top: 0; left: 0; bottom: 0; right: 0; background-color: red; }
オンラインデモ
W3.org:?「margin-top」または「margin-bottom」が「auto」の場合、使用される値は 0 です。
Developer.mozilla.org:?…絶対に配置された要素はフローから削除されるため、スペースを占有しません
利点:
クロスブラウザ、優れた互換性 (ハック不要、IE8~IE10を考慮可能)
特別なタグなし、より合理化されたスタイル要素の高さを宣言する必要があります
要素のオーバーフローや異常な表示の問題を回避するには、overflow:auto; スタイルを設定することをお勧めします
2. ネガティブマージンメソッド:
.negative-margin { width: 300px; height: 200px; padding: 20px; position: absolute; top: 50%; left: 50%; margin-left: -170px; /* (width + padding)/2 */ margin-top: -120px; /* (height + padding)/2 */}
3.transformメソッド:
.transform { width: 50%; margin: auto; position: absolute; top: 50%; left: 50%; -webkit-transform: translate(-50%,-50%); -ms-transform: translate(-50%,-50%); transform: translate(-50%,-50%);}
4.内部ブロックメソッド:
<div class="Center-Container is-Inline"> <div class="Center-Block"> <!-- CONTENT --> </div></div>
CSS:
.Center-Container.is-Inline { text-align: center; overflow: auto;} .Center-Container.is-Inline:after,.is-Inline .Center-Block { display: inline-block; vertical-align: middle;} .Center-Container.is-Inline:after { content: ''; height: 100%; margin-left: -0.25em; /* To offset spacing. May vary by font */} .is-Inline .Center-Block { max-width: 99%; /* Prevents issues with long content causes the content block to be pushed to the top */ /* max-width: calc(100% - 0.25em) /* Only for IE9+ */ }
オンラインデモ
5. フレックスボックスメソッド:
.Center-Container.is-Flexbox { display: -webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex; -webkit-box-align: center; -moz-box-align: center; -ms-flex-align: center; -webkit-align-items: center; align-items: center; -webkit-box-pack: center; -moz-box-pack: center; -ms-flex-pack: center; -webkit-justify-content: center; justify-content: center;}
利点:
コンテンツの高さと幅は任意で、オーバーフローすることもできます。パフォーマンスも良好です
さまざまな高度なレイアウト手法に使用できます本文にスタイルを記述するか、追加のコンテナが必要です
さまざまなベンダーが必要です最新のブラウザと互換性を持たせるための接頭辞 6.テーブルセルメソッド:
HTML:
<div class="Center-Container is-Table"> <div class="Table-Cell"> <div class="Center-Block"> <!-- CONTENT --> </div> </div></div>
CSS:
.Center-Container.is-Table { display: table; }.is-Table .Table-Cell { display: table-cell; vertical-align: middle;}.is-Table .Center-Block { width: 50%; margin: 0 auto;}Onlineデモ
参照元:
CodePen of shshaw