這是一個早之前研究過的東西,今天java開發提及了這個,順帶記錄一下。
這裏有一行代碼,很簡單的一段代碼
<style type="text/css"> #div1{ background:#000; width:100px; height:100px; margin-top:10px; } #div2{ margin-top:20px; background:#f00; width:50px; height:50px; } </style> <div id="div1"> <div id="div2"></div> </div>
但是在瀏覽器中打開後,竟然是這個樣子的~css
( 黑色的區塊爲div1,紅色的爲div2 )html
從效果上看div2的margin-top像是沒有生效,經測量div1的margin-top值,發現這個div2的margin-top像是生效到div1上了。前端
就這幾行代碼寫錯是不大可能,那這又是怎麼回事?java
以前遇到這個問題時,試遍了全部的瀏覽器,都是這個樣子;我就覺着這是個兼容性極佳的BUG。git
後來一個偶然的機會發如今父級上增長border或者overflow:hidden是能夠規避這個問題,且這個問題只會在常規流向中出現,也就是說用position或者是float都不會存在這個問題。github
整點原理規範什麼的提升一下;百度一下,你就知道。。瀏覽器
在本規範中,表述邊距重合意味着兩個或多個框(可能相鄰也可能嵌套)的相鄰的邊距(其間沒有邊白或邊框間隔)重合在一塊兒而造成一個單一的邊距。
CSS2中,水平邊距永遠不會重合。
首先了解到這並非BUG,而是個規範,雖然看上去像是BUG
按着規範試一下,覺着仍是像是個BUG。前端框架
看規範是一目十行,過目就忘,仍是整理一下。框架
隨筆一行
這是前端最好的時代, 這也是前端最壞的時代。 衆多前端框架滿天飛,隨着 jQuery 在前端行業的慢慢弱化,老是會有一種斯人遠去,何者慰籍的感受。互勉吧,各位。佈局
另推薦個表格組件gridManager