inline-block、BFC、邊距合并

1.在什么場景下會出現(xiàn)外邊距合并?如何合并?如何不讓相鄰元素外邊距合并?給個父子外邊距合并的范例

邊距合并出現(xiàn)的場景

  1. 元素自身外邊距合并:盒模型包括 外邊距→邊框→內邊距→內容 逐層包裹的結構,當元素沒有內容,內邊距,邊框時候,垂直外邊距就會相遇從而合并)。
  1. 相鄰元素外邊距合并:相鄰元素,上下邊距如果相遇就會產(chǎn)生合并。
  1. 父元素與子元素外邊距合并:當沒有邊框或者內邊距包裹的話,父子元素的垂直邊距就會相遇 從而產(chǎn)生合并,只有普通文檔流的塊級框才會發(fā)生垂直外邊距的合并,行內框,浮動框,和絕對定位框不會發(fā)生合并。

如何合并?

  1. 兩者為正的時候,取更大值
  1. 一正一負的時候,取相加值
  1. 兩者為負時,取更小值

如何不讓相鄰元素外邊距合并?

  1. 讓相鄰元素處于不同的BFC中,形成各自的世界來隔絕相互的影響。
1.png
  1. 讓相鄰元素嵌套在不同的父容器上,添加內邊距或者邊框來隔絕兩者外邊距的合并。
2.png
  1. 轉化為浮動,絕對定位框或者行內框(垂直外邊距的合并只對普通文檔流塊級框才有效果)
3.png

2.去除inline-block內縫隙有哪幾種常見方法?

  1. 把元素寫在一行緊挨著,這樣瀏覽器就不會解析空格。
  2. 使用浮動
  3. 使用負邊距

3.父容器使用overflow: auto| hidden撐開高度的原理是什么?

使用overfl:auto|hidden 都會形成BFC,從而擁有了自己的領域,而這個領域的高度,浮動元素一樣是參與計算的,所以就撐開了高度。

4.BFC是什么?如何形成BFC,有什么作用?

BFC是什么

BFC(塊級格式化上下文),即一個獨立的空間或者領域,內部元素與外部元素互不干涉

如何形成BFC

根元素(當我們初始在html里輸入內容超過屏幕高度時會產(chǎn)生滾動條,符合形成BFC)
overflow(不為visible)
float ( 不為none )
position(fixed或absolute)
display:inline-block|table|table-cell|table-captaion|inline-flex|flex;
(以上都會形成BFC)
ie7及以下版本:*zoom:1;(觸發(fā)haslayout)

有什么作用

BFC可以清除元素浮動外部元素的影響,撐開高度防止高度塌陷,也可以隔絕子元素和父元素的垂直外邊距合并,當然相鄰元素也可以。

5.浮動導致的父容器高度塌陷指什么?為什么會產(chǎn)生?有幾種解決方法

浮動導致子元素脫離了正常的文檔流,使父元素無法掌控從而導致高度的塌陷。

解決方法:

  1. 父容器形成BFC建立自己的領域,從而獲得控制權,孫悟空即使再牛逼也逃不過五指山
  2. 清除浮動帶來的影響,可以在父容器內添加額外的標簽,然后清除浮動?;蛘呃脗晤?code>:after來清除浮動帶來的影響,方法原理一樣。

本篇文章版權歸咸魚和饑人谷所有,轉載須說明來源

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容