小姐

positio1n:relative和負(fù)margin都可以使元素位置發(fā)生偏移?二者有什么區(qū)別

position:relative相對(duì)自己原本的位置偏移,不影響其它普通流中元素的位置。

margin:除了讓元素自身發(fā)生偏移還影響其它普通流中的元素。

BFC 是什么?如何生成 BFC?BFC 有什么作用?

BFC:塊格式化上下文(block formatting context) 是Web頁(yè)面的可視CSS渲染的一部分。它是塊盒子的布局發(fā)生及浮動(dòng)體彼此交互的區(qū)域。首先BFC是一個(gè)名詞,是一個(gè)獨(dú)立的布局環(huán)境,我們可以理解為一個(gè)箱子(實(shí)際上是看不見摸不著的),箱子里面物品的擺放是不受外界的影響的。

形成條件:
根元素或其它包含它的元素
浮動(dòng) (元素的 float 不是 none)
絕對(duì)定位的元素 (元素具有 position 為 absolute 或 fixed)
內(nèi)聯(lián)塊 inline-blocks (元素具有 display: inline-block)
表格單元格 (元素具有 display: table-cell,HTML表格單元格默認(rèn)屬性)
表格標(biāo)題 (元素具有 display: table-caption, HTML表格標(biāo)題默認(rèn)屬性)
塊元素具有overflow ,且值不是 visible
display: flow-root

注意:浮動(dòng)不會(huì)影響其它塊格式化上下文中元素的布局,并且清除浮動(dòng)只能清除同一塊格式化上下文中在它前面的元素的浮動(dòng)。

應(yīng)用:
自適應(yīng)的兩欄布局。
清除元素內(nèi)部浮動(dòng)。
嵌套元素margin邊距合并問(wèn)題的解決。

在什么場(chǎng)景下會(huì)出現(xiàn)外邊距合并?如何合并?如何不讓相鄰元素外邊距合并?

外邊距合并出現(xiàn)的三個(gè)場(chǎng)景。

同一個(gè)BFC,且同處于普通流中的垂直相鄰元素外邊距合并。
父子元素的外邊距合并。
空元素的外邊距合并。

合并規(guī)則:

1兩個(gè)margin都是正值的時(shí)候,取兩者的最大值;
2當(dāng) margin 都是負(fù)值的時(shí)候,取的是其中絕對(duì)值較大的,然后,從0位置,負(fù)向位移;
3當(dāng)有正有負(fù)的時(shí)候,先取出負(fù) margin 中絕對(duì)值中最大的,然后,和正 margin 值中最大的 margin 相加。
4所有毗鄰的margin要一起參與運(yùn)算,不能分步進(jìn)行。

不讓相鄰元素外邊距合并的方法:
1被非空內(nèi)容、padding、border 或 clear 分隔開。
2不在一個(gè)普通流中或一個(gè)BFC中。
3margin在垂直方向上不毗鄰。

總結(jié):
1這些margin都處于普通流中,并在同一個(gè)BFC中;
2這些margin沒有被非空內(nèi)容、padding、border 或 clear 分隔開;
3這些margin在垂直方向上是毗鄰的,包括以下幾種情況:

  • 一個(gè)box的top margin與第一個(gè)子box的top margin
  • 一個(gè)box的bottom margin與最后一個(gè)子box的bottom margin,但須在該box的height 為auto的情況下
  • 一個(gè)box的bottom margin與緊接著的下一個(gè)box的top margin
  • 一個(gè)box的top margin與其自身的bottom margin,但須滿足沒創(chuàng)建BFC、零min-height、零或者“auto”的height、沒有普通流的子元素。
    4例外的情況
    根元素的外邊距不會(huì)參與折疊
    不設(shè)置任何屬性的空span和空div不影響任何布局,可以無(wú)視之。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 問(wèn)答題47 /72 常見瀏覽器兼容性問(wèn)題與解決方案? 參考答案 (1)瀏覽器兼容問(wèn)題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 14,149評(píng)論 1 92
  • relative:生成相對(duì)定位的元素,通過(guò)top,bottom,left,right的位置相對(duì)于其正常位置進(jìn)行定位...
    zx9426閱讀 1,075評(píng)論 0 2
  • 1.在什么場(chǎng)景下會(huì)出現(xiàn)外邊距合并?如何合并?如何不讓相鄰元素外邊距合并?給個(gè)父子外邊距合并的范例 概念:在CSS當(dāng)...
    饑人谷_任磊閱讀 846評(píng)論 0 3
  • 一,浮動(dòng)元素有什么特征?對(duì)父容器、其他浮動(dòng)元素、普通元素、文字分別有什么影響? 浮動(dòng)模型是一種可視化格式模型,浮動(dòng)...
    DeeJay_Y閱讀 1,002評(píng)論 0 4
  • 1. 在什么場(chǎng)景下會(huì)出現(xiàn)外邊距合并?如何合并?如何不讓相鄰元素外邊距合并?給個(gè)父子外邊距合并的范例 外邊距合并:外...
    進(jìn)擊的阿群閱讀 1,097評(píng)論 1 2

友情鏈接更多精彩內(nèi)容