flexbox簡介
什么是flexbox
flexbox是一種新的布局方式,這種布局方式是2009年W3C提出的方案。它可以簡便,完整,完成頁面的布局。目前,它已經得到所有瀏覽器的支持。
但是flexbox從2009年以來,有各種版本的變化,比如2009年版本和2011年版本差別比較大。
為什么要有flexbox
每個新事物出現都有其歷史使命的。flexbox也是如此,傳統的布局依賴於屏幕的寬度和高度,或者依賴於計算的百分比,但是flex則是直接按照比例關系進行布局展示。
這樣做的好處就是當屏幕進行拉升等情況的時候,flex布局的頁面仍然符合我們的預期。
比如一個橫排布局
|-----|-----|----------|
| 1 | 1 | 2 |
|-----|-----|----------|
平時的布局情況我們就會為1設置寬度25%,2設置寬度50%。但是這個時候,如果我們要變成下面這個布局呢?
|-----|-----|-----|----------|
| 1 | 1 | 1 | 2 |
|-----|-----|-----|----------|
那么我們就需要重新設置比例了,1比例為20%,2比例為40%。
在flexbox中,我們就可以直接設置一個橫排為一個flex容器,然后子結構1的比例為1(flex:1),自結構2的比例為(flex:2)。
flexbox都有哪些屬性可以設置
強烈推薦(《A Complete Guide to Flexbox》)[https://css-tricks.com/snippets/css/a-guide-to-flexbox/]。文章圖文並茂地說了各個屬性的各種含義。
父容器的屬性
- display:flex。 表明這個容器是flex布局。
- flex-direction: row | row-reverse | column | column-reverse; 表明容器里面的子元素的排列方向。
- flex-wrap: nowrap | wrap | wrap-reverse; 如果子元素溢出父容器的時候是否進行換行。
- justify-content: flex-start | flex-end | center | space-between | space-around; 這一個容器子元素橫向排版在容器的哪個位置
- align-items: flex-start | flex-end | center | baseline | stretch; 這個容器子元素縱向排版在容器的哪個位置
- align-content: flex-start | flex-end | center | space-between | space-around | stretch; 當容器內有多行項目的時候,項目的布局
子元素的屬性
- order:
; 子元素的排序 - flex-grow:
; 分配剩余空間的比例 - flex-shrink:
; 分配溢出空間的比例 - flex-basis:
| auto; - flex: none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ] 在容器中占比
- align-self: auto | flex-start | flex-end | center | baseline | stretch; 特定某個子元素的排布情況
參考文章
(A Complete Guide to Flexbox)[https://css-tricks.com/snippets/css/a-guide-to-flexbox/]
(終極Flexbox屬性查詢列表)[http://www.w3cplus.com/css3/css3-flexbox-cheat-sheet.html]
(一個完整的Flexbox指南)[http://www.w3cplus.com/css3/a-guide-to-flexbox.html]
(Flex 布局教程:語法篇)[http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html]
(利用flexbox構建可伸縮布局)[http://yanni4night.com/blog/flexbox-layout.html]