移動端全兼容的flexbox布局

轉載自全兼容的flexbox布局

先聊聊歷史

在2009年最早版本的Flexbox規(guī)范中,我們編寫為“display:box;”,
中期版本的Flexbox;我們編寫為“display:flexbox;”
而目前的規(guī)范版本,我們定義“display:flex;”。flexbox規(guī)范的制定可謂是艱辛百變,
但目前使用的最新版本草案已于今年3-1日正式進入W3C的候選推薦標準(Candidate Recommendation)階段,這也就意味著關于flexbox的最終規(guī)范即將落地。

版本VS兼容

如下圖所示,除了Opera mobile12,移動端的各大瀏覽器都是支持flexbox的舊版語法的,但不包含flex的wrap屬性。


信手拈來的flexbox最佳實例

(以下代碼片段均遵循flexbox移動端全兼容性寫法,已驗證機型列表見文章最后) 我們先來回顧一下flexbox的屬性體系:直白的解釋,我們常說的“flexbox”其實包含“父元素”,“子元素”2個部分,將“父元素”定義為一個flexbox,則在"父元素"里的“子元素們”就被賦予了可以自由伸縮的能力。 賦予神奇能力的代碼片段如下:


1.用flex做提示icon

這里用到了flex父元素的“align-items”屬性。 指定元素沿側軸對齊方式 ```
align-item: flex-start | flex-end | center | space-between | space-around | stretch;

![](https://isux.tencent.com/wp-content/uploads/2016/05/20160510190821107.png)
一句屬性設置,就可以完成頂部對齊,居中對齊或是底部對齊的切換,簡單方便值得擁有。
###**2.用flex做列表元素**
同樣,只需要用flex父元素的“align-items”屬性,就可以制作靈活多變的列表元素了。如下圖所示,3種狀態(tài)的變形都不需要修改CSS文件,只需要按需隱藏DOM結構就搞定。
####**這里多注意1個Tips:像下圖例子中的左側圖片,右側按鈕這些固定寬度的子元素,不需要增加“flex:1”的能力,維持原樣即可。**

![](https://isux.tencent.com/wp-content/uploads/2016/05/20160510190821663.png)
![](https://isux.tencent.com/wp-content/uploads/2016/05/20160510190822302.png)
###**3.用flex做tab**

做均分的tab,應該是flexbox最常見的一個功能了,實現原理很簡單,只需要給“父元素”,“子元素”分別賦予“display:flex”,"flex:1"即可。子元素的寬度不會根據內容的長短而發(fā)生改變。如下圖所示,前臺同學增加或刪減tab數量,只需要增減DOM結構即可,無需樣式的修改。
![](https://isux.tencent.com/wp-content/uploads/2016/05/20160510190824335.png)
####**★重點兼容TIPS:  在舊版的規(guī)范中,使用比例伸縮布局時,子元素的內容長短不同會導致無法“等分”,這個時候,我們需要給子元素設置一個“width:0%”來解決問題。** **★重點兼容TIPS:  不要給flexbox里的子元素設置“margin:auto”的屬性,在部分安卓機下,它會導致該元素的寬度撐開到100%占位**

![](https://isux.tencent.com/wp-content/uploads/2016/05/20160510190823505.png)

希望以上的demo對移動端開發(fā)的小伙伴們有用。當然,flexbox還有一些很帥氣的屬性,例如order,wrap等等,它們只是暫時還不被移動端所有的系統兼容,咋們的x5內核已經剛剛表示全面兼容flexbox的所有屬性。關于flexbox的未來我們敬請期待就好! 
**最后,附贈一個全DEMO的合集:**[http://115.159.36.96/tikizheng/flextest/demo.html](http://115.159.36.96/tikizheng/flextest/demo.html)
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • H5移動端知識點總結 閱讀目錄 移動開發(fā)基本知識點 calc基本用法 box-sizing的理解及使用 理解dis...
    Mx勇閱讀 4,834評論 0 26
  • 移動開發(fā)基本知識點 一.使用rem作為單位 html { font-size: 100px; } @media(m...
    橫沖直撞666閱讀 3,745評論 0 6
  • 導語: 布局的傳統解決方案,基于盒狀模型,依賴 display屬性 + position屬性 + float屬性。...
    涼燼閱讀 11,961評論 0 4
  • 選擇qi:是表達式 標簽選擇器 類選擇器 屬性選擇器 繼承屬性: color,font,text-align,li...
    love2013閱讀 2,460評論 0 11
  • 閱讀目錄移動開發(fā)基本知識點 calc基本用法box-sizing的理解及使用理解display:box的布局理解f...
    張憲宇閱讀 1,686評論 0 1

友情鏈接更多精彩內容