display:box屬性


  • 在移動端開發的時候,聖杯布局,彈性盒,是我們經常會用得到的,W3C很久以前就有一個display:box屬性

  • display:box
    • 父元素設置該屬性后,作用與display:flex類似,子元素可在一行顯示,且實現自適應。
  • box-orient:horizontal/vertical
    • 父元素設置該屬性后,作用與flex-direction: column相似。使子元素排列方向發生變化。
      • horizontal  水平排列,子代總width=父級width。若父級固定寬度,則子代設置的width無效,子代會撐滿父級寬度。
      • vertical      垂直排列,子代總height=父級height。若父級固定高度,則子代設置的height無效,子代會撐滿父級高度。
  • box-direction:normal/reverse
    • 在父級上設置該屬性,作用使改變子元素的排列順序,
      • normal  默認值,子代按html順序排列  1,2,3,4
      • reverse  反序,所有元素相反順序來 ,4,3,2,1
  • box-align:start/end/center/stretch
    • 在父級設置,子代的垂直對齊方式。
    • start  垂直頂部對齊
    • end 垂直底部對齊
    • center 垂直居中對齊
    • stretch 拉伸子代的高度,與父級設置的高度一致。子代height無效。
注:我們一般多使用box-align:center;來實現子元素的垂直居中。
  • box-pack:start/end/center
    • 在父級設置,子代的水平對齊方式。
    • start  水平左對齊
    • end    水平右對齊
    • center  水平居中對齊
注:我們一般多使用box-pack:center來實現子元素水平居中方式
  • box-flex: 1
    •  作用與flex: 1;相同。若子元素設置固定寬高,則子元素按照該子元素的寬和高,若沒有設置該屬性的子元素會占滿具有display:box屬性父元素中剩余的所有的空間。
    • 設置為1則為所有剩余空間,可以為負數。
    • 若子元素有margin值,則按余下(父級寬度-子代固定總寬度-總margin值)寬度占number份
 
  • 大家不難發現display:box屬性與display:flex屬性幾乎一模一樣,就下來就會有人問了,這兩個一樣的東西到底有什么區別呢?
  • 所以兼容性的代碼,大致如下
    • 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 是新規范,老機子不支持的
 


免責聲明!

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



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