首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

CSS margin-top 導致父元素塌陷:BFC 與 margin 塌陷原理解析

     編輯:程式設計綜合問答

現象

子元素設定 `margin-top`,父元素跟著向下移動,而非子元素在父元素內向下移動。

原因:Margin Collapse (外邊距合併/塌陷)

當**父子元素垂直外邊距相鄰**、且父元素**沒有 BFC (塊級格式化上下文) 觸發條件**時,子元素的 `margin-top` 會「傳遞」給父元素,導致父元素產生相同外邊距。

觸發 BFC 的常見方式 (任一即可)

方法CSS副作用
overflow 隱藏/自動overflow: hidden / auto可能剪裁內容/出現滾動條
Flex/Grid 容器display: flex / grid現代佈局首選,無副作用
浮動float: left / right需清除浮動,影響佈局
絕對/固定定位position: absolute / fixed脫離文檔流
邊框/內邊距border: 1px solid transparent / padding-top: 1px視覺無差異,最輕量

推薦修正

.parent {
    /* 方案一:最輕量 */
    padding-top: 1px;           /* 或 border-top: 1px solid transparent */
    /* 方案二:現代佈局 */
    display: flow-root;         /* 專門建立 BFC,無副作用 (現代瀏覽器支援) */
    /* 方案三:Flex */
    display: flex; flex-direction: column;
}

深度解析參考

張鑫旭博客詳細圖解:https://www.cnblogs.com/hejia/archive/2013/05/26/3099697.html

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved