[CSS] 水平與垂直置中的各種方法
使用 CSS 將 div 內的文字(inline element)或另一個 div (block element) 水平垂直置中的方法
在網頁排版的時候經常會遇到需要水平(左右)、垂直(上下)置中的排版設計,同時也是前端面試的時候經常被問到的基礎考題。
可以先判斷要置中的元素:
- 是行內元素(inline element)還是區塊元素(block element)
- 想要水平置中還是垂直置中(或兩者皆是)
來分別對應不同的 CSS 置中方法。
文字水平垂直置中
行內元素(例如:文字)的置中方式。
flex(最推薦)
最推薦使用,與各瀏覽器相容度高。
使用 flexbox 排版 display: flex 搭配屬性 justify-content(主軸對齊方式)、 align-items (交錯軸對齊方式)來將 div 裡的文字置中。
- 在父層(container)
div下display: flex;
水平置中
- -v加上
justify-content: center;屬性來讓主軸(水平)置中對齊
垂直置中
加上 align-items: center; 屬性來讓交錯軸(垂直)置中對齊
水平垂直置中
綜合以上即可達到水平、垂直置中:
div {
display: flex;
justify-content: center; /* 水平置中 */
align-items: center; /* 垂直置中 */
}
line-height & text-align(較不推薦)
較不推薦使用。不夠彈性,只能用在單行文字的垂直置中。
text-align大家應該不陌生,設定文字對齊方式text-align: center;來將文字水平置中。line-height的作用顧名思義就是設定了文字的行高,文字會放置在這一行空間的垂直置中位置。
假設文字的尺寸 (font-size) 是 12px,行高 (line-height) 是 20px,那 麼文字會被置於在高 20px 的行盒 (line box) 中,上下會各留有 4px 的距離。
水平置中
- 設定
text-align: center;將文字水平置中
垂直置中
- 將
line-height與div設定同高,就可以做到單行文字垂直置中的效果
水平垂直置中
綜合以上即可達到水平、垂直置中:
div {
background: yellow;
width: 500px;
height: 100px;
line-height: 100px; /* 文字垂直置中 */
text-align: center; /* 文字水平置中 */
}
試著將文字反白可以看到行高是佔滿整個 div 的:

table + vertical-align(少用)
較少使用。
將要置中的元素當成 table-cell 就可以使用 vertical-align 樣式來將內容垂直置中。由於是文字所以一樣可以透過 text-align: center; 將文字水平置中。
水平置中
- 設定
text-align: center;將文字水平置中
垂直置中
- 在父層下
display: table;將元素轉為 table - 在子層下
display: table-cell;