CSS3 display:flex和display:box有什麼區別?

**區別**,僅是各階段草案命名。
- W3C 2009年第1次草案:[display:box;]( )
- W3C 2011年第2次草案:[display:flexbox | inline-flexbox;]( )
- W3C 2012年第5次草案及之後的候選推薦標準:[display:flex | inline-flex;] (https://www.w3.org/TR/2012/WD-css3-flexbox-20120612/)


做者:山茶樹和葡萄樹
連接:https://www.zhihu.com/question/22991944/answer/96153192
來源:知乎
著做權歸做者全部,轉載請聯繫做者得到受權。
 
前者是flex 2012年的語法,也將是之後標準的語法,大部分瀏覽器已經實現了無前綴版本。

後者是2009年的語法,已通過時,是須要加上對應前綴的。

因此兼容性的代碼,大體以下

display: -webkit-box; /* Chrome 4+, Safari 3.1, iOS Safari 3.2+ */ display: -moz-box; /* Firefox 17- */ display: -webkit-flex; /* Chrome 21+, Safari 6.1+, iOS Safari 7+, Opera 15/16 */ display: -moz-flex; /* Firefox 18+ */ display: -ms-flexbox; /* IE 10 */ display: flex; /* Chrome 29+, Firefox 22+, IE 11+, Opera 12.1/17/18, Android 4.4+ */

若是要說區別,display:box; 是老規範,要兼顧古董機子就加上它。
flexbox flex 是新規範,老機子不支持的。

css

其實要使多瀏覽器兼容flexbox容器樣式,能夠使用以下CSS樣式進行定義:
.flex-container {
  display: -moz-box;  /* Firefox */ 
  display: -ms-flexbox;    /* IE10 */ 
  display: -webkit-box;    /* Safari */  
  display: -webkit-flex;    /* Chrome, WebKit */ 
  display: box;  
  display: flexbox;  
  display: flex;   
  width: 100%;  
  height: 100%;  
  background-color: gray;
}

父元素設置display:flex後,子元素寬度會隨父元素寬度的改變而改變,display:box不會。css3

相關文章
相關標籤/搜索