CSS3 Flex Box - Part 2
簡介
在瞭解了 flex box 如何排列子元件的大原則後,這篇來討論一下如何調整彈性元件的位置。以下有兩個調整彈性元件位置相關的屬性,兩屬性都擁有三、四個屬性值,組合各屬性及其值的方式很多樣,但掌握大原則後,再寫程式測一下就很容易明白了。
以下的解說用 {flex-direction:row; flex-wrap:wrap;} 的設定為範例來解釋行為模式,其它的設定則可類推。
- justify-content
- 依主軸 (main axis) 的走向為基準(要記住主軸的走向是由 flex-direction 的設定所決定的),在列或欄中調整各彈性元件的位置。
- flex-start
- 此為預設值。依主軸的走向依次排列彈性元件,排列完後,將整體的起始邊緣對齊向主軸的起點 (main start),。
- flex-end
- 依主軸的走向依次排列彈性元件,排列完後,將整體的結束邊緣對齊向主軸的終點 (main end)。
- center
- 依主軸的走向依次排列彈性元件,排列完後,將整體的中線對齊向主軸的中間點。
- space-between
- 依主軸的走向依次排列彈性元件,將多餘的空間平均分配在各個彈性元件之間。
- space-around
- 依主軸的走向依次排列彈性元件,將多餘的空間平均分配在各個彈性元件的兩旁。
- align-content
- 依側軸 (cross axis) 的走向為基準,調整各列或各欄的位置。行為模式和 justify-content 一模一樣,只是 justify-content 以主軸為基準,在各列或各欄中調整各彈性元件在主軸走向的位置;而 align-content 則以側軸為基準,在彈性容器中調整各列或各欄的位置。如果彈性容器中只有一列或一欄時,這個屬性就沒有作用了,當 flex-direction 為 row 或 row-reverse,且彈性容器的 height 設定為 auto 時,因為彈性容器的 height 是計算出來的值,其值會正好等於所有列高的和,也就不會有多餘的空間可以調整,所以不論如何設定,彈性元件的位置看起來都是一樣的。
- flex-start
- 所有的列或欄,都靠向側軸的起點 (cross start)。這是預設值。
- flex-end
- 所有的列或欄,都靠向側軸的終點 (cross end)
- center
- 所有列或欄的整體中線對齊側軸的中間點。
- space-between
- 將多餘的空間平均分配於各列或各欄之間。
- space-around
- 將多餘的空間平均分配於各列或各欄的兩旁。
justify-content:flex-start
justify-content:flex-end
justify-content:center
justify-content:space-between
justify-content:space-around
以下的圖片 justify-content 的設定都是 flex-start。
align-content:flex-start
align-content:flex-end
align-content:center
align-content:space-between
align-content:space-around
CSS
<style>
html {
width:100%;
height:auto;
font:normal normal normal 1em Arial, '文泉驛正黑', 'WenQuanYi Zen Hei', '儷黑 Pro', 'LiHei Pro', '微軟正黑體', 'Microsoft JhengHei';
}
body {
margin: 0 auto;
width: 800px;
padding:20px;
}
.container {
display: flex;
flex-direction:row;
flex-wrap:wrap;
justify-content:flex-start;
align-content:flex-start;
width: 200px;
height:150px;
padding:20px;
background-color: lightgreen;
}
.center {
display:flex;
justify-content: center;
align-items:center;
}
.item {
width:40px;
height:40px;
border:1px solid black;
background-color: coral;
font-size:2em;
}
</style>
.container{} 中 width:200px; 這樣會讓它個彈性元件分成兩列,height:150px; 會讓列高較大,有足夠的空間讓 align-content 屬性可以發揮。只要改變 justify-content 及 align-content 的值,再重新下載網頁,就可以看到彈性元件在彈性容器中不同的排列方式。
HTML
<body></body>1234567










沒有留言:
張貼留言