display:flex 多欄多列布局


轉自:http://www.360doc.com/content/14/0811/01/2633_400926000.shtml

 

display:flex 多欄多列布局瀏覽器支持情況:火狐直接支持w3c無前綴寫法,谷歌和opera支持-webkit- 前綴寫法,比較適合移動端開發使用,

display:flex 這個牛逼的css3布局屬性,遺憾的是只有谷歌和火狐支持,
中國人常用的手機上的瀏覽器幾乎全軍覆沒,UC瀏覽器不支持,安卓4.1.1和之前版本手機自帶的瀏覽器也不支持,微信自帶瀏覽器也不支持。

看來要留給兒子們用了。

示例:

html,body{ padding:0; margin:0;}
/*
	flex-flow: row wrap; row橫向(左向右)顯示 column豎向(上向下)顯示 wrap一行顯示不完的時候換行
*/
.col{ border:red solid 1px;}
footer { height:300px;
 
  display: -webkit-flex;
  -webkit-flex-flow: row;
  -webkit-align-items: stretch;
  -webkit-justify-content:space-between;
  
  /*IE10還不支持*/
  display: -ms-flex;
  -ms-flex-flow: row wrap;
  -ms-align-items: stretch;
  -ms-justify-content:space-between;
	
  display: flex;
  flex-flow: row;
  align-items: stretch;
  justify-content:space-between;
}
.col2{-webkit-flex:1;-moz-flex:1;flex:1}
display:flex 的HTML測試結構<footer>
    <div class="col col1" style=" width:60px;">jquery特效</div>
    <div class="col col2" style="">前端路上</div>
    <div class="col col3" style="width:30px;">懶人建站</div>
</footer> 

一個Flexbox布局是由一個伸縮容器(flex containers)和在這個容器里的伸縮項目(flex items)組成。

  伸縮容器(flex  containers)是一個HTML標簽元素,並且“display”屬性顯式的設置了“flex”屬性值。在伸縮容器中的所有子元素都會自動變成伸縮項目(flex  items)。
  這有一個三列布局的例子。外面的div容器是一個伸縮容器,而里面的left、main和right三個div都是伸縮項目:

http://image77.360doc.com/DownloadImg/2014/08/1101/44186598_1.jpg


  設置一個簡單的伸縮容器很容易,代碼如下:

        .container {  display: flex;}          伸縮方向與換行(flex-flow)
  伸縮容器有一個CSS屬性“flex-flow”用來決定伸縮項目的布局方式。如果伸縮容器設置了“flex-flow”值為“row”,伸縮項目排列由左向右排列:

 

http://image77.360doc.com/DownloadImg/2014/08/1101/44186598_2.jpg

  如果“flex-flow”值設置為“column”,伸縮項目排列由上至下排列:

http://image77.360doc.com/DownloadImg/2014/08/1101/44186598_3.jpg
  這里將展處樣設置伸縮容器,使用伸縮項目在一行中顯示:

.container {  display: flex;  flex-flow: row;}          一個伸縮容器中的所有伸縮項目既可以排列在單行也可以多行排列。這個主要由“flex-flow”是否設置為“wrap”來決定。如果伸縮容器設置了“wrap”屬性值,當伸縮項目在伸縮容器中無法在一行中顯示的時候會另起一行排列。

http://image77.360doc.com/DownloadImg/2014/08/1101/44186598_4.jpg
  這里展示了如何將伸縮容器設置為“wrap”:

.container {  display: flex;  flex-flow: row wrap;}  伸縮項目(flex items)
  在伸縮容器中的所有子元素都將自動變成伸縮項目。沒有額外配置CSS的必要。你唯一需要的做的就是設置伸縮項目的尺寸。
  如果伸縮容器把“flex-flow”設置為“row”后,伸縮項目將需要設置他們的寬度。伸縮項目的高度將會自動設置為伸縮容器的高度:

http://image77.360doc.com/DownloadImg/2014/08/1101/44186598_5.jpg

 如果伸縮容器把“flex-flow”設置為“column”后,伸縮項目將需要設置他們的高度,伸縮項目的寬度將會自動設置為伸縮容器的寬度:

http://image77.360doc.com/DownloadImg/2014/08/1101/44186598_6.jpg

 給伸縮項目設置“width”和“height”屬性來定義伸縮項目尺寸,而這個伸縮項目是獨立於其他伸縮項目。例如,如果我們給主內容(content)設置了一個600px的寬度,不管伸縮容器中有一個、兩個或者上百個伸縮項目,主內容的寬度都是600px。

  如果你想伸縮項目根據伸縮容器剩余的空間來決定伸縮項目的寬度,你可以使用“flex”屬性。例如,我們可以告訴瀏覽器,左邊欄和右邊欄占用了伸縮容器減去主內容寬度的空間。
  flex的值於對應的空間成正比。如果左邊欄設置了值為“1”和右邊欄設置了值為“2”,伸縮容器剩余的空間將按比例分配給左邊欄和右邊欄,並且右邊欄所占的空間是左邊欄的兩倍:

http://image77.360doc.com/DownloadImg/2014/08/1101/44186598_7.jpg

  下面是示例中運用在伸縮項目上的一些代碼,展示了獨立寬度和按比例計算的寬度:

.main {  width: 600px;}.left {  flex: 1;}.right {  flex: 2;}  完整的實例
  這是一個很簡單的實例,Flexbox創建了一個經典的三列布局。主內容寬度為60%,而邊欄是使用“flex”屬性,按比例自動根據伸縮容器剩余空間計算得到對應的寬度:
  HTML結構
  …       …     …
          CSS代碼
.container {  display: flex;  flex-flow: row;}.main {  width: 60%;}.left {  flex: 1;}.right {  flex: 2;}  示例效果

http://image77.360doc.com/DownloadImg/2014/08/1101/44186598_8.jpg
 


免責聲明!

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



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