為什么relative定位無法讓元素完美居中?
在css布局中,很多開發者嘗試使用position: relative;結合margin: auto;來實現元素居中,卻發現僅能水平居中,垂直居中失效。本文將解釋其原因。
問題在于position: relative;和position: absolute;或position: fixed;的定位機制差異。
absolute和fixed定位的元素脫離文檔流,其top、right、bottom、left屬性相對于其包含塊(containing block)進行定位。若未設置包含塊的position屬性,包含塊默認為
。因此,margin: auto;可以實現水平和垂直居中。
而relative定位的元素仍在文檔流中,其top、right、bottom、left屬性是相對于自身位置偏移。left: 0; right: 0; top: 0; bottom: 0;并不會改變元素在父容器中的位置,僅影響其內部內容的相對位置。margin: auto;在這種情況下只對水平居中有效。垂直居中需要其他方法,例如Flexbox或grid布局。
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END