今日は主にCSSにおける様々なセンタリング方法についてお話します。
最初に行うのは、水平方向に中央揃えにすることです。もちろん、最も簡単な方法は
margin:0 auto;
つまり、margin-left プロパティと margin-right プロパティを auto に設定して、水平方向の中央揃えの効果を実現します。
他の方法はどうですか?一つずつ説明しましょう:
line-height
まず、テキストの水平方向の中央揃え方法を紹介します:
<div class="wrap">刘放</div>
line-height を高さに設定して使用するだけです:
.wrap{ line-height: 200px;/*垂直居中关键*/ text-align:center; height: 200px; font-size: 36px; background-color: #ccc; }
効果は次のとおりです:
padding
パディングと背景クリップを使用して div の水平方向と垂直方向のセンタリングを実現します:
<div class="parent"> <div class="children"></div> </div>
backgroun-clip をコンテンツボックスに設定し、背景をコンテンツ領域の外側の端までトリミングし、パディングを使用してコンテンツ領域の差を設定します。外側の div と内側の div の半分を実現します:
.parent{ margin:0 auto; width:200px; height:200px; background-color:red; } .children { width: 100px; height: 100px; padding: 50px; background-color: black; background-clip:content-box;/*居中的关键*/
効果は次のとおりです:
余白を埋める
次に、水平方向と垂直方向の中央揃えを実現するための余白を埋める方法を紹介します。
まず、親子 div を定義します:
ここでは、 child div margin-top は、親 div の高さから子 div の高さの半分を引いた値に設定され、その後、オーバーフローが親 div の BFC をトリガーするために非表示に設定されます。 LESS コードは次のとおりです。
最終的なセンタリング効果は次のとおりです: absolute Positioning 上、左50%でposition:absoluteを使用し、マージンを負の値に設定して、divを水平方向と垂直方向に中央に配置します。親子 div を定義する必要があります:@parentWidth:200px; @childrenWidth:50px; .parent { margin:0 auto; height:@parentWidth; width:@parentWidth; background: red; overflow:hidden;/*触发BFC*/ } .children { height:@childrenWidth; width:@childrenWidth; margin-left:auto; margin-right:auto; margin-top: (@parentWidth - @childrenWidth) / 2; background:black; }
<div class="parent"> <div class="children"></div> </div>
ご存知のとおり、text-align は div 内のコンテンツを水平方向に中央揃えにすることができます。しかし、子 div をこの div の中央に配置したい場合はどうすればよいでしょうか?子 div の表示を inline-block に設定できます。
.parent { position:relative; margin:0 auto; width:200px; height:200px; background-color:red; } .children { position:absolute; left:50%; top:50%; margin:-25px 0 0 -25px ; height:50px; width:50px; background-color: black; }
以下のリンクを参照してください:
個人サイト
.parent { text-align:center; margin:0 auto; width:200px; height:200px; background:red; } .children { positiona;absolute; margin-top:75px; width:50px; height:50px; background: black; display:inline-block;/*使其父元素text-align生效*/ }
<div class="parent"> <p> <img class="hidden-img" src="http://nec.netease.com/img/s/1.jpg" alt="" /> <img class="show-img" src="http://nec.netease.com/img/s/1.jpg" alt="" /></p> </div>
最初にコードに移動します:
.parent { position:relative; width:100%; height:200px; background:red; } p { position:absolute; top:50%; left:50%; } .hidden-img { visibility:hidden; } .show-img { position:absolute; right:50%; bottom:50%; }
<div class="parent"> <div class="children"> <div class="children-inline">我是水平垂直居中噢!</div> </div> </div>
まず垂直方向について説明します。まず、子の上部を 50% に設定し、その上端を垂直の中心線に合わせます。同様に、子の内部を上に -50% 移動する必要があります。ただし、この 50% は計算できないため、translate3d(0, -50%, 0); を使用します。このメソッドは非常に使いやすいです。
flex centering
最後に、CSS3のdisplay:flexで実装される水平方向と垂直方向のセンタリング方法を紹介します。
.parent { float: left; width: 100%; height: 200px; background-color: red; } .children { float:left; position:relative; top:50%; left:50%; } .children-inline { position: relative; left: -50%; -webkit-transform : translate3d(0, -50%, 0); transform : translate3d(0, -50%, 0); background-color: black; color:white; }
<div class="parent"> <div class="children">我是通过flex的水平垂直居中噢!</div> </div>
効果は次のとおりです:
この方法は最も簡単ですが、互換性は良くありませんが、時間が経つにつれて、すべての主要なブラウザが互換性を持つようになります。
上記は CSS のさまざまなセンタリング方法についての全体的な説明です。気に入っていただければ幸いです。