亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

關于bfc的問題. 應該是bfc

關于bfc的問題. 應該是bfc

拉風的咖菲貓 2019-04-21 20:13:58
.wraper{width:1200px;margin:0auto;}.left{float:left;}.right{float:right;}.left,.right{width:200px;height:200px;background:red;}ul{overflow:hidden;}這里一個疑問。1.為什么ul的寬會是800px?而不是1200?給ul設置寬為1200px的時候,ul為什么不會換行?overflow不是觸發了bfc不會和float重碟嗎?3.當子元素含有float的時候,此元素是不是也觸發了bfc?
查看完整描述

2 回答

?
尚方寶劍之說

TA貢獻1788條經驗 獲得超4個贊

問題1:為什么ul的寬會是800px?而不是1200?
題主已經說了,創建了新的BFC(establishesanewblockformattingcontext)的元素,不會與float重疊,因此。w3c的表述是:
Theborderboxofatable,ablock-levelreplacedelement,oranelementinthenormalflowthatestablishesanewblockformattingcontext(suchasanelementwith'overflow'otherthan'visible')mustnotoverlapthemarginboxofanyfloatsinthesameblockformattingcontextastheelementitself.
其中mustnotoverlap就是說不重疊了,所以ul在width為auto的默認情況下,實際寬度比包含塊小。
問題2:給ul設置寬為1200px的時候,ul為什么不會換行?overflow不是觸發了bfc不會和float重碟嗎?
經測試,在Firefox下不換行。但IE及Chrome下,都會認為空間不足而換行。一般來說,Chrome和Firefox同作為現代瀏覽器,它們的兼容差異是很少的,像這種有差異的情況,可以認為是w3c尚未詳細描述的邊緣細節。就這個具體問題來說,如果w3c的mustnotoverlap是字面意思的話,也只是說,目前Chrome和IE對這個地方實現地更正確一些,僅此而已。
問題3:當子元素含有float的時候,此元素是不是也觸發了bfc?
建立新的BFC的條件:
視口提供的初始包含塊(根元素)
浮動元素
絕對定位元素
display為inline-block、table-cell、table-caption的計算值的元素(行內塊、表格標題、單元格)
overflow不為visible的塊元素
所以,如果問題里的”元素“是指這個浮動子元素的話,那就是“建立了新的BFC”。
                            
查看完整回答
反對 回復 2019-04-21
?
鴻蒙傳說

TA貢獻1865條經驗 獲得超7個贊

1.float并沒有脫離文檔劉所以也還是會占有空間所以ul只能是800因為left和right分別是200的寬度2.給ul設置overflow只會對子元素出發bfc對他自己本身所在的文檔中是沒有影響的
                            
查看完整回答
反對 回復 2019-04-21
  • 2 回答
  • 0 關注
  • 439 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號