彈性布局各種坑爹兼容


當然也看到過遇到flexbox布局的屬性將所有的新的老的前綴都加上的,這樣省事啊 誰閑着沒事整天研究那幾個屬性的兼容,更可況前端發展這么快說不定有更牛逼的樣式出現

但是想在移動端用好這個布局摸透這個屬性 我還是一個個都探究下吧,在此先說下各瀏覽器PC端最新版本情況目前:IE最新版本是ie11, FF最新版本是ff41.0, Chrome最新版本是chrome45.0, Safira最新版本8.0.3, opera最新版本是31 然而這些最新版本對我們來說並沒什么卵用 只是個標准 沒有誰電腦裝的都是最新版瀏覽器,好吧 看下各個屬性兼容

display:box/flexbox/flex 先看這個定義彈性布局盒子 附上兼容圖

還是比較直觀對此屬性做兼容只需如下

    display:-webkit-box;
    display: -moz-box;
    display: -ms-flexbox;
    display: -webkit-flex;
    display: flex;

定義子元素排列

目前有兩種新的寫法flex-direction和舊的寫法box-orient+box-direction,

新寫法flex-direction的兼容

舊寫法box-orient和box-direction兼容一樣的

可以看出,ie11下版本還是不支持方向這屬性,其他瀏覽器要加前綴,所以當要定義方向時這個兼容可以寫成

    -webkit-box-orient:vertical;
    -webkit-box-direction:normal;
    -moz-box-orient:vertical;
    -moz-box-direction:normal;
    flex-direction:column;
    -webkit-flex-direction:column;

用box-orient:horizontal + box-direction:normal/reverse可以達到flex-direction:row/row-reverse效果

用box-orient:vertical + box-direction:normal/reverse可以達到flex-direction:column/column-reverse效果

 

定義子元素換行情況

新寫法flex-wrap 兼容如下

舊寫法box-lines:single/multiple 默認single  兼容如下

ie11下還是不支持此屬性,上面firefox不支持但在25版本后是支持的,還是要用flex加-moz, 比較直觀所以定義子元素換行時 可以如下寫法

  -webkit-flex-wrap:wrap;
    -webkit-box-lines:multiple;
    -moz-flex-wrap:wrap;
    flex-wrap:wrap;

 

flex-flow

這個是上面兩個屬性的合寫

flex-flow兼容

為了兼容到舊的瀏覽器就需要用到box-orient+box-lines配合 故兼容可以如下寫

    -webkit-flex-flow:row wrap;
    -webkit-box-orient:horizontal;
    -webkit-box-lines:multiple;
  -moz-flex-flow:row wrap; box-orient:horizontal; box-lines:multiple; flex-flow:row wrap;

橫向排列布局

新版本justify-content的兼容情況

舊版本box-pack的兼容情況

故兼容可寫成:

-webkit-justify-content:center;
justify-content:center;
-moz-box-pack:center;
-webkit--moz-box-pack:center;
box-pack:center;

豎向排列布局

新版本align-items兼容情況

舊版本box-align的兼容情況

故兼容性可寫成:

align-items:center;
-webkit-align-items:center;
box-align:center;
-moz-box-align:center;
-webkit-box-align:center;

伸縮盒子布局兼容

新版本flex:num兼容

舊版本box-flex兼容

故兼容性可寫成

box-flex:num;
-webkit-box-flex:num;
-moz-box-flex:num;
flex:num;
-webkit-flex:num;

 元素出現順序

新版本order:num兼容

舊版本border-order:num兼容

故兼容性可寫成

box-order:num;
-webkit-box-order:num;
-moz-box-order:num;
order:num;
-webkit-order:num;

 

。。。哎 也是醉了 這玩意這么多屬性 一個個研究兼容 可能有些會不全面但大部分是這樣 還有個就是ie兼容可能寫的不夠全 有的是在舊版本多加個-ms 不是不支持這個屬性么 也不知道加上有什么意思, 醉人的布局  強大是沒的說 問題也是一大堆啊!!!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM