瀏覽器兼容與BFC詳解

1、css兼容問題

     (1)IE6不識別html5標籤

              解決:引入html5shiv.js庫

     (2)IE6元素左右浮動,子元素設置高度後,父元素的浮動消失

              解決:給子元素也加上浮動

     (3)IE6下第一塊元素浮動後,第二塊元素加的margin-left值等於第一塊元素的寬度,會有間隙問題

              解決:第二塊元素去掉margin-left,添加浮動

     (4)IE6下子元素寬高大於父元素寬高時,會把父元素撐開

             解決:不讓子元素寬高大於父元素寬高

     (5)p、td、h標籤都不要嵌套塊元素

     (6)margin-top傳遞

              解決:觸發BFC或者haslayout

              上邊距margin疊加

              解決:儘量使用同方向的margin,比如都設置top或bottom

     (7)IE6下display:inline-block無效

              解決:加上dispaly:inline-block;dispaly:inline;*zoom:1;

      (8)IE6下最小高度1px卻爲19px

               解決:加上overflow:hidden;

      (9)IE6/7下,元素浮動後再加上margin會出現雙邊距問題

              解決:加上*dispaly:inline;

      (10)IE6/7下,假如li中的子元素都浮動,li之間會有4px間隙問題

              解決:在li中添加*vertical-align:top;

       (11)IE6下兩個浮動元素中間有註釋或者行內元素,並且浮動元素和父元素寬度相差3px,會出現文字溢出bug

                解決:避免兩個浮動元素中間有註釋或者行內元素,或者與父元素寬度相差3px以上

       (12)IE6/7下,父元素的overflow:hidden包不住子元素,假如子元素有position:relative定位

                 解決:給父元素也加上position:relative定位

       (13)IE6下父元素寬高爲奇數且有定位時,子元素相對父元素的定位會有1px的偏差

                解決:避免父元素寬高爲奇數

      (14)IE6下input的空隙

               解決:input加float:left

      (15)IE6下輸入類型控件中圖片會輸輸入的內容滾動

               解決:給圖片加fixed定位



BFC的觸發:

根元素或其它包含它的元素;

浮動 (元素的float不爲none);

絕對定位元素 (元素的positionabsolutefixed);

行內塊inline-blocks(元素的 display: inline-block);

表格單元格(元素的display: table-cell,HTML表格單元格默認屬性);

overflow的值不爲visible的元素;

彈性盒 flex boxes (元素的display: flexinline-flex);


BFC的特性:

       一個元素不能同時存在於兩個BFC中;

      內部的盒會在垂直方向一個接一個排列(可以看作BFC中有一個的常規流);

     處於同一個BFC中的元素相互影響,可能會發生margin collapse;

     每個元素的margin box的左邊,與容器塊border box的左邊相接觸(對於從左往右的格式化,否則相反)。即使存在浮動也是如此;

     BFC就是頁面上的一個隔離的獨立容器,容器裏面的子元素不會影響到外面的元素,反之亦然;

     計算BFC的高度時,考慮BFC所包含的所有元素,連浮動元素也參與計算;

     浮動盒區域不疊加到BFC上;





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章