margin 屬性是 margin-top 、margin-right、 margin-bottom 、 margin-left 的總和,可以一次包含四個值,若 margin 屬性填入四個值,四個值依序會是從上方開始順時鐘方向,右、下、左,也可以填入三個值;若是三個值依序會是上、左右值、下;若是兩個值,依序代表上下值、左右值
值可以是長度單位 ( px / rem / em …)、百分比(%)、auto ,或是負值,若使用負值會讓元素和其他內容更靠近
margin: 0 auto 是常使用來讓區塊元素水平置中的語法,需搭配固定寬度
margin 需注意若有一個以上的區塊元素排列,且都有設定上下 margin,會有 margin 重疊的情形,若上下都設定 margin,重疊時會留下較大值的 margin(使用 float 或絕對定位排列不會產生重疊)
可以參考 理解邊界重疊的原因 - CSS | MDN
父元素與第一個或最後一個子元素也會有邊界重疊的情形,常見的是父元素和第一個子元素的 margin-top 貼在一起,這時候 margin-top 會是在父元素外,而不是在父元素中
若是有這樣的情形可以在父元素設定 border、padding,或是將內容設定成行內元素就可以解決此情況
padding 屬性和 margin 的語法相同,是 padding-bottom、 padding-left 、padding-right 、padding-top 的總和,也可以填入 1 - 4 個值,四個值分別代表上、又、下、左;三個值為上、左右、下,兩個值為上下值、左右值,一個值則是四邊都相同
需注意值可以是長度單位 ( px / rem / em …)、百分比(%),但 auto 在 padding 是無效的,也不能設定負值的 padding
參考資料:
padding - CSS | MDN
margin - CSS | MDN
理解邊界重疊的原因
CSS 失控的 Margin top | 卡斯伯 Blog - 前端,沒有極限