CSS中的兩個Bug和BFC

2021-09-02 23:12:00 字數 1622 閱讀 6745

先看兩個bug

第乙個bug:margin塌陷。

*

margin-top: 100px;

margin-left: 100px;

width: 100px;

height: 100px;

background-color: orange;

}.content

可以看到第一步增加的**子元素移動了,第二步增加的**沒有讓子元素移動,這個bug叫margin塌陷(子集相對於父級沒有頂棚一樣)。

怎麼解決這個bug?

方案一:(不建議使用,但能解決效果)父級增加乙個頂棚,加乙個視覺化的border-top。

margin-top: 100px;

margin-left: 100px;

width: 100px;

height: 100px;

background-color: orange;

border-top: 1px solid red;/*父級增加此行***/}

方案二:使用bfc。

bfc(block format context)塊級格式化上下文。每個盒子的渲染規則是一定的,設定成bfc後改變了盒子的渲染規則。

改變的規則後就解決了margin塌陷。

如何觸發乙個盒子的bfc?下面是幾種常用的方法。

position:absolute

float:left/right

display:inline-block 

overflow:hidden   溢位父元素部分隱藏。

下面就是觸發父級bfc解決margin塌陷。

margin-top: 100px;

margin-left: 100px;

width: 100px;

height: 100px;

background-color: orange;

/*overflow: hidden;*/

/*display: inline-block;*/

/*float: left;*/

/*position: absolute;*/}

幾種方法中用哪乙個比較好?首選float方法。

第二個bug:margin合併。

updown

*

.up.down

可以看到增加的**並沒有增加上下兩個元素的間距,而是公用了一段距離。

怎麼解決這個bug?

方法一:(不建議使用,不要因為改bug增加結構。但是能解決問題)在html結構中給up或者down增加父級結構並觸發bfc。

down

overflow: hidden;}

方法二:不解決此問題。

上下兩個兄弟元素垂直間距設定在乙個屬性(margin-bottom)下,為什麼還要分開設定呢?比如上下兩個元素間距100px,

設定上乙個元素margin-bottom:100px即可,沒有必要還要margin-bottom50px, margin-top50px 分開設定,雖然有bug但能用數學

方法解決,開發過程能接受。

BFC和CSS的兩個BUG 20181223

當為一對普通流中的父子盒子中的子盒子設定margin top時,如果父盒沒有設定乙個border top,且雙方的margin top都為正的時候,那麼就會存在有乙個高度塌陷的問題。具體的表現是父盒和子盒共享margin top,如果他們同時具有margin top的時候,以值最大的為準。該問題的解...

最近遇到的兩個BUG

最近遇到兩個bug 第一 我要用jdbc連線客戶的oracle資料庫客戶版本為11g 由於我的測試錯誤我覺得使用的class12這個包版本有點老,好像查不出oracle11g的資料 經證實是我錯了 所以我換了oracle11g的ojdbc6 g驅動包。sql select instance name...

React兩個bug踩坑

import react from react 複製 console報錯render找不到,這是因為react已經把reactdom分離出來,這樣引用會出錯,改為 import react from react import reactdom from react dom 複製 後正常 consol...