HTML5基礎加強css樣式篇(伸縮容器屬性:flex-direction, flex-wrap,flex-flow,align-items,align-content)(五十三)
1.justify-content 屬性詳見(五十二)
2.flex-direction:row || row-reverse || column || column-reverse //設定主軸的方向
row:預設:
row 反向設定主軸方向:
column :主軸方向設定為縱軸方向(縱軸的方向為原來橫軸的正方向);
column-reverse:主軸方向設定為縱軸方向的反方向(縱軸的方向為原來橫軸的正方向)
測試程式碼如下:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> <style type="text/css"> .layout-box { width: 600px; height: 300px; background-color: #f0f0f0; /*宣告一個元素為伸縮盒模型,伸縮容器 1.伸縮專案 沿主軸排列(start -> end) 2.所有的伸縮專案(子元素)與父元素等高。 3.伸縮專案自動升級為塊元素。 */ display: flex; /*主軸方向對主軸對齊的影響 預設值 flex-direction: row*/ flex-direction: row; /*反向設定主軸*/ flex-direction: row-reverse; /* justify-content: flex-end; justify-content: center; justify-content: space-around; justify-content: space-between;*/ /*主軸縱向*/ /*flex-direction: column;*/ /*justify-content: flex-end;*/ /*justify-content: center;*/ /*justify-content: space-around;*/ /*justify-content: space-between;*/ flex-direction: column-reverse; justify-content: flex-end; align-items: flex-end; /*justify-content: center;*/ /*justify-content: space-between;*/ } .item { } .item1 { background-color: #f00;} .item2 { background-color: #ff0; } .item3 { background-color: #00f;} .item4 { background-color: #f0f;} </style> </head> <body> <div class="layout-box"> <div class="item item1">1</div> <div class="item item2">222</div> <div class="item item3">3</div> <div class="item item4">4</div> </div> <script type="text/javascript"> </script> </body> </html>
3.flex-wrap:nowrap || wrap || wrap-reverse//伸縮容器對伸縮專案的包裹,當為伸縮專案設定寬度(或者高度)會造成伸縮專案沿主軸空間不足時設定
nowrap::預設當伸縮容器主軸方向空間不足,壓縮伸縮專案,但不會換行
wrap:當伸縮容器主軸方向空間不足,換行顯示 1.換行後,行高等於 容器的高度/行數 2.預設,側軸拉伸基於行高。
wrap-reverse:側軸 start 與 end 對調;
測試程式碼:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> <style type="text/css"> .layout-box { width: 600px; height: 300px; background-color: #f0f0f0; display: flex; /* 伸縮容器對伸縮專案的包裹 當為伸縮專案設定寬度(或者高度)會造成伸縮專案沿主軸空間不足 預設:當伸縮容器主軸方向空間不足,壓縮伸縮專案,但不會換行 flex-wrap: nowrap; */ flex-wrap: nowrap; /* 當伸縮容器主軸方向空間不足,換行顯示 1.換行後,行高等於 容器的高度/行數 2.預設,側軸拉伸基於行高。 */ flex-wrap: wrap; /*側軸 start 與 end 對調*/ flex-wrap: wrap-reverse; flex-direction: column; align-items: flex-start; } .item { width: 250px} .item1 { background-color: #f00;} .item2 { background-color: #ff0; } .item3 { background-color: #00f; } .item4 { background-color: #f0f;} </style> </head> <body> <div class="layout-box"> <div class="item item1">1</div> <div class="item item2">222</div> <div class="item item3">3</div> <div class="item item4">4</div> </div> <script type="text/javascript"> </script> </body> </html>
4.flex-flow:row nowrap;//屬性是flex-direction屬性和flex-wrap屬性的簡寫形式,預設值為row nowrap
5.align-items: flex-start | flex-end | center | stretch|baseline;//屬性定義專案在側軸(交叉軸)上如何對齊。
flex-start:交叉軸的起點對齊。
flex-end:交叉軸的終點對齊。
center:交叉軸的中點對齊。
baseline: 專案的第一行文字的基線對齊。
stretch(預設值):如果專案未設定高度或設為auto,將佔滿整個容器的高度。
測試程式碼:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> <style type="text/css"> .layout-box { width: 600px; height: 300px; background-color: #f0f0f0; display: flex; /*側軸對齊 預設值 align-items: stretch; 沿側軸拉伸伸縮專案與伸縮容器一致*/ align-items: stretch; align-items: flex-start; align-items: flex-end; align-items: center; /*基線對齊 伸縮專案沿著一行中,伸縮專案基線最大(行高或者字型最大的)的基線作為其對齊依據。 */ align-items: baseline; } .item { } .item1 { background-color: #f00;} .item2 { background-color: #ff0; } .item3 { background-color: #00f; font-size: 72px;} .item4 { background-color: #f0f;} </style> </head> <body> <div class="layout-box"> <div class="item item1">1</div> <div class="item item2">222</div> <div class="item item3">3</div> <div class="item item4">4</div> </div> <script type="text/javascript"> </script> </body> </html>
6.align-content: flex-start | flex-end | center | space-between | space-around | stretch;//屬性定義了多根軸線的對齊方式。如果專案只有一根軸線,該屬性不起作用。
flex-start:與交叉軸的起點對齊。
flex-end:與交叉軸的終點對齊。
center:與交叉軸的中點對齊。
space-between:與交叉軸兩端對齊,軸線之間的間隔平均分佈。
space-around:每根軸線兩側的間隔都相等。所以,軸線之間的間隔比軸線與邊框的間隔大一倍。
stretch(預設值):軸線佔滿整個交叉軸。
測試程式碼:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
.layout-box {
width: 800px;
height: 300px;
background-color: #f0f0f0;
display: flex;
/* 當伸縮容器主軸方向空間不足,換行顯示
1.換行後,行高等於 容器的高度/行數
2.預設,側軸拉伸基於行高。
*/
flex-wrap: wrap;
/*justify-content: flex-end;*/
/*當出現多行時,align-items 是基於行的 start -> end 對齊*/
/*align-items: flex-start;*/
/*當出現多行時,配合 align-content 屬性一起使用,實現在伸縮容器側軸方向對齊*/
align-content: flex-start;
align-content: center;
align-content: flex-end;
/*讓多行在側軸均勻分佈*/
align-content: space-between;
align-content: space-around;
}
.item { width: 300px}
.item1 { background-color: #f00;}
.item2 { background-color: #ff0; }
.item3 { background-color: #00f; }
.item4 { background-color: #f0f;}
</style>
</head>
<body>
<div class="layout-box">
<div class="item item1">1</div>
<div class="item item2">222</div>
<div class="item item3">3</div>
<div class="item item4">4</div>
</div>
<script type="text/javascript">
</script>
</body>
</html>
圖片選取:http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html