【行內元素】適用inline,inline-block,inline-table,inline-flex元素css
.center { text-align: center; }
【塊級元素】適用於block level元素 html
①一個塊級元素佈局
.center { margin: 0 auto; }
②多個塊級元素flex
方法一:將塊級元素變爲行內塊級元素 html部分: <main class="inline-block-center"> <div>1</div> <div>2</div> <div>3</div> </main> css部分: .inline-block-center { text-align: center; } .inline-block-center div { display: inline-block; text-align: left; } 方法二:flex佈局 html部分: <main class="flex-center"> <div>1</div> <div>2</div> <div>3</div> </main> css部分: .flex-center{ display:flex; justify-content:center; }
【行內元素】flexbox
①單個行內元素:code
狀況一:當link或文本有包裹元素時,設置相等的上下paddingorm
.link { padding-top: 30px; padding-bottom: 30px; }
狀況二:當link或文本沒有包裹時,設置行高和高度相等htm
.center-text-trick { height: 100px; line-height: 100px }
②多個行內元素:it
方法一:將多個行內元素分別置於table-cell中 html部分: <table> <tr> <td> 1 </td> </tr> </table> css部分: table td { background: black; color: white; padding: 20px; border: 10px solid white; /* default is vertical-align: middle; */ } 方法二:將父元素設置爲display:table,將自身設置爲display:table-cell html部分: <div class="center-table"> <p>1</p> </div> css部分: .center-table { display: table; height: 250px; width: 240px; } .center-table p { display: table-cell; vertical-align: middle; } 方法三:使用felex html部分: <div class="flex-center"> <p>1</p> </div> css部分: .flex-center{ display: flex; justify-content: center; flex-direction: column; height: 400px;/*父容器必須有固定高度*/ } 方法四:當以上代碼均不可用時,可嘗試此奇淫巧技 html部分: <div class="ghost-center"> <p>1</p> </div> css部分: .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; }
【塊級元素】io
①已知元素高度(絕對定位+負的margin)
.parent { position: relative; } .child { position: absolute; top: 50%; height: 100px; margin-top: -50px; /* 爲元素高度的一半,沒有box-sizing時,爲height+padding+border的一半*/ }
②不知元素高度(與上一方法,大同小異)
.parent { position: relative; } .child { position: absolute; top: 50%; transform: translateY(-50%); }
③flex佈局
.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;/* 注意此處爲height+padding+的一半*/ }
②沒有固定寬高的元素(同以前沒有固定寬高元素同樣,用transform解決)
.parent { position: relative; } .child { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); }
③使用flexbox佈局
.parent { display: flex; justify-content: center; align-items: center; }
以上的居中大法,基本能夠知足平常需求啦,假若有所錯誤,歡迎指正啦~