學小程序咱們須要有點html、css、js基礎,而flex佈局是咱們小程序經常使用的css佈局,學習小程序以前,咱們須要瞭解一些css方面的佈局知識-Flex佈局,Flex 佈局將成爲將來佈局的首選方案css
Flex 是 Flexible Box 的縮寫,意爲"彈性佈局",用來爲盒狀模型提供最大的靈活性。html
傳統佈局小程序
flex佈局瀏覽器
html結構:佈局
<div class="container">
<span>1</span>
<span>2</span>
<span>3</span>
</div>
複製代碼
.container{
display: flex;
height: 300px;
width: 80%;
background-color: red;
justify-content: space-around;
}
.container span{
background-color: blue;
/* width: 150px; */
height: 100px;
margin-right: 10px;
flex: 1;
}
複製代碼
效果以下圖:
學習
flex是flexible box 的縮寫,意爲「彈性佈局」,用來爲盒狀模型提供更大的靈活性,任何一個容器均可以指定爲flex佈局。flex
採用flex佈局的元素,稱爲flex容器(flex container),簡稱「容器」。它的全部子元素自動成爲容器成員,稱爲flex項目(flex item),簡稱「項目」。
拿上面的例子來講明:ui
父元素設置的常見6個屬性:spa
在flex佈局中,是分爲主軸和側軸兩個方向,一樣的說法:行和列、x軸和y軸3d
flex-direction屬性決定主軸的方向(即項目的排列方向)
注意: 主軸和側軸是會變化的,就看flex-direction設置誰爲主軸,剩下的就是側軸,而咱們的子元素是跟着主軸來排列的。
.container{
/* 給父元素添加flex 屬性 */
display: flex;
height: 300px;
width: 80%;
background-color: red;
/*默認的主軸是x軸,子元素跟着主軸從左到右排列*/
/*flex-direction: row;*/
/*咱們能夠把咱們的主軸設置爲與軸,那麼x軸就成爲了側軸,子元素沿着主軸的方向從上到下排列*/
flex-direction: column;
}
.container span{
background-color: blue;
width: 150px;
height: 100px;
margin-right: 10px;
}
複製代碼
justify-content屬性定義了項目在主軸上的對齊方式
注意:使用這個屬性以前必定要肯定好主軸是哪一個
<div class="container">
<span>1</span>
<span>2</span>
<span>3</span>
<span>4</span>
</div>
複製代碼
css樣式效果:
.container{
/* 給父元素添加flex 屬性 */
display: flex;
height: 300px;
width: 800px;
background-color: red;
/*默認的主軸是x*/
flex-direction: row;
/* justify-content是設置主軸上子元素的排列方式 */
/*讓元素居中對齊*/
/* justify-content:center; */
/*平均分配剩餘空間*/
/* justify-content: space-around; */
/*先貼兩邊,再分配剩餘空間*/
justify-content: space-between;
}
.container span{
background-color: blue;
width: 150px;
height: 100px;
/* margin-right: 10px; */
}
複製代碼
.container{
/* 給父元素添加flex 屬性 */
display: flex;
height: 800px;
width: 800px;
background-color: red;
/*默認的主軸是x*/
flex-direction: column;
/* justify-content是設置主軸上子元素的排列方式 */
/*讓元素居中對齊*/
/* justify-content:center; */
/*平均分配剩餘空間*/
/* justify-content: space-around; */
/*先貼兩邊,再分配剩餘空間*/
justify-content: space-between;
}
.container span{
background-color: blue;
width: 150px;
height: 100px;
/* margin-right: 10px; */
}
複製代碼
默認狀況下,項目都排在一條線上,flex-wrap屬性定義,flex佈局中默認是不換行的。若是裝不下,會縮小子元素寬度,放到父元素裏面。
該屬性是控制子項在側軸(默認是y軸)上的排列方式,在子項爲單項的時候使用
.container{
/* 給父元素添加flex 屬性 */
display: flex;
height: 300px;
width: 800px;
background-color: red;
/*默認的主軸是x*/
justify-content: center;
/*側軸居中*/
align-items: center;
}
.container span{
background-color: blue;
width: 150px;
height: 100px;
margin: 10px;
}
複製代碼
顯示效果以下圖:
設置子項在側軸上的排列方式而且只能用於子項出現換行的狀況(多行),在單行下是沒有效果的
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>flex</title>
<style> .container{ /* 給父元素添加flex 屬性 */ display: flex; height: 300px; width: 800px; background-color: red; /*默認的主軸是x*/ justify-content: center; flex-wrap: wrap; /*由於有了換行*/ align-content: space-around; } .container span{ background-color: blue; width: 150px; height: 100px; margin: 10px; } </style>
</head>
<body>
<div class="container">
<span>1</span>
<span>2</span>
<span>3</span>
<span>4</span>
<span>5</span>
<span>6</span>
</div>
</body>
</html>
複製代碼
效果以下:
flex-flow屬性是flex-direction和flex-wrap屬性的複合屬性
flex-flow: row wrap;
複製代碼
flex屬性定義子項目分配剩餘空間,用flex來表示佔了多少份數
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>flex</title>
<style>
.container{
/* 給父元素添加flex 屬性 */
display: flex;
height: 150px;
width: 60%;
background-color: red;
margin: 0 auto;
}
.container div:nth-child(1) {
width: 100px;
height: 150px;
background-color: pink;
}
.container div:nth-child(2) {
flex:1;
height: 150px;
background-color: green;
}
.container div:nth-child(3) {
width: 100px;
height: 150px;
background-color: blue;
}
</style>
</head>
<body>
<section class="container">
<div>1</div>
<div>2</div>
<div>3</div>
</section>
</body>
</html>
複製代碼
效果以下圖:
align-self屬性容許單個項目有與其餘項目不同的對齊方式,可覆蓋align-items屬性。默認值爲auto,表示繼承父元素的align-items屬性,若是沒有父元素,則等同於stretch.
數值越小,排列越靠前,默認爲0,
注意: 和z-index不同。
今天只要分享了關於移動端佈局用到的flex佈局,主要是各屬性的用法,若是想了解更多。請掃描二維碼,關注公衆號: