外間距折疊 (Collapsing margins) 筆記

# Collapsing margins

兩個相鄰元素之間的垂直間距 (vertical margins) 會折疊(合併)取最大的值
水平之間的間距 (horizontal margins) 並不會折疊
只會發生在區塊 (block)元素之間
設定 floatabsolute 時也不會發生折疊

# 兄弟相鄰


margin-bottom: 16px
margin-top: 8px

紅色跟綠色區塊之間的間距折疊取最大值 16px

# 父與第一/最後的子


block
margin-top: 16px
父: margin-top: 8px; margin-bottom: 8px;
margin-bottom: 16px
block

第一/最後的子元素跟父元素貼在一起,之間沒有 content、padding-top、padding-bottom、border-top、border-bottom 所以子元素的外間距就跟父元素折疊取最大值 16px

# 空區塊元素


block
block

兩個灰色區塊之間有一個空區塊元素 margin-top: 16px; margin-bottom: 24px;
與上下的間距不會加起來,而是折疊取最大值 24px

<div class="bg-gray-400 px-2 py-1 text-white">block</div>
<div class="mt-4 mb-6"></div>
<div class="bg-gray-400 px-2 py-1 text-white">block</div>

# 父子外間距折疊避免方式

# inline-block

block
margin-top: 16px
父: display: inline-block; margin-top: 8px; margin-bottom: 8px;
margin-bottom: 16px
block

# padding-top、padding-bottom

block
margin-top: 16px
父: padding-top: 16px; padding-bottom: 16px; margin-top: 8px; margin-bottom: 8px;
margin-bottom: 16px
block

# border-top、border-bottom

block
margin-top: 16px
父: border-top: 1px solid #ef4444; border-bottom: 1px solid #ef4444; margin-top: 8px; margin-bottom: 8px;
margin-bottom: 16px
block

# 參考

Last Updated: 2021/09/24 15:23:25