水平置中直覺會使用 Flexbox Layout 的 justify-content: center,事實上也可使用 Flow Layout 的 margin: auto 更精簡。
Version
CSS 3
margin-left: auto

紅色正方形水平置中。
<template>
<div class="square"/>
</template>
<style>
.square {
width: 100px;
height: 100px;
background: #f00;
margin-left: auto;
margin-right: auto;
}
</style>
- 將
margin-left與margin-right設定為auto,表示<div>的左右 margin 將自動調整,因此<div>能水平置中。
margin: auto

紅色正方形水平置中。
<template>
<div class="square"/>
</template>
<style>
.square {
width: 100px;
height: 100px;
background: #f00;
margin: auto;
}
</style>
第 6 行
.box {
width: 100px;
height: 100px;
background: #f00;
margin: auto;
}
可簡單寫成 margin: auto 即可水平置中。
因為 margin: auto 相當於
margin-top: automargin-bottom: automargin-left: automargin-right: auto
但因為目前 <div> 只占據一列,本身就沒有 margin-top 與 margin-bottom,因此設定 auto 也無效,所以 margin: auto 相當於 margin-left: auto 與 margin-right: auto。
Conclusion
margin: auto與 Flexbox 都能水平置中,唯 Flexbox 是從父層處理,故須在外層多加一層<div>;而margin: auto是從子層處理,故可直接針對 element 設定