CSS3 Flex Box - part 3
簡介
在完成彈性容器中大的排版布局後,現在要看看如何微調彈性元件在列或欄中,於側軸走向上的位置調整。這方面有兩個屬性:align-items 和 align-self。align-items 設定於彈性容器的元件中,所有的彈性元件都會遵循這個設定調整位置;除非在某一或某些彈性元件中有設定 align-self,此時這些彈性元件會脫離 align-items 的設定,而以 align-self 的設定為調整的依據。
- flex-start
- 列或欄中的所有彈性元件,以列或欄的範圍為限,靠近側軸的起點 (cross start) 線。
- flex-end
- 列或欄中的所有彈性元件,以列或欄的範圍為限,靠近側軸的終點 (cross end) 線。
- center
- 列或欄中的所有彈性元件,元件的中線對齊列或欄的中心線。彈性元件中若有文字,則不同彈性元件中之文字的底線可能不在同一高度。
- baseline
- 將列或欄中的彈性元件以元件中的文字底線 (baseline) 為準對齊。這樣會使各彈性元件中之文字的底線在同一個高度上。對齊各彈性元件的文字底線後,所有彈性元件的最邊緣會靠近側軸的起點線。
- stretch
- 這是預設值。縮放彈性元件在側軸走向的長度以配合彈性容器的側軸長度,倘若彈性元件中有明確的定義側軸走向的長度,例如:側軸走向為垂直,而彈性元件中有明確的定義 height 或 min-height, max-height,則會以定義為優先,不會強制縮放成側軸的長度。
align-items:stretch;
align-items:flex-start;
align-items:flex-end;
align-items:center;
align-items:baseline;
align-items:flex-start; align-self:flex-end;
範例
在範例中建立了六個區塊,區塊中各有一小段文字,其中有兩區塊的文字字型特別小,這樣在做各種不同設定時,可以看出設定間的差別;特別是在設定 align-items:baseline 時,更容易看出是如何以文字的底線對齊的,如果和 align-items:center 的圖片比對,則更容易看出分別。要測試 align-self 時只要在 CSS 宣告中取消 align-self 的註解,更改設定後,重新載入網頁,便可看到改變了。
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; align-items: flex-start; width: 400px; height:150px; padding:20px; background-color: lightgreen; } .normal { padding:8px; border: 1px solid black; background-color: coral; font-size: 2em; } .blacksheep { padding:8px; /* align-self:flex-end; */ border: 1px solid black; background-color: skyblue; font-size: 1em; } </style>
CSS 中,.normal{} 設定了四個彈性元件的外觀,具有比較大的字型。.blacksheep{} 則設定了兩個彈性元件的外觀,具有比較小的字型; align-self 的屬性設定暫時被註解掉了,取消註解後,改變其設定便可以測試 align-self 屬性值所造成的排版效果。
HTML
<body></body>NormalBlacksheepNormalNormalNormalBlacksheep
HTML 中建立了六個區塊,其中有兩個區塊的 CSS 類別為 blacksheep,用來和其它 CSS 類別為 normal 的區塊作區分。
沒有留言:
張貼留言