天天看點

flex彈性盒子布局flex彈性布局的簡單使用

flex彈性布局的簡單使用

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title>測試</title>
		<style type="text/css">
			* {
				margin: 0;
				padding: 0;
				list-style: none;
			}
		</style>
	</head>
	<body>
		<ul>
			<li>首頁</li>
			<li>公告</li>
			<li>熱點</li>
			<li>聯系</li>
		</ul>
	</body>
</html>
           

由于li标簽是塊級元素,是以浏覽器顯示如下:

flex彈性盒子布局flex彈性布局的簡單使用

那麼如何讓它變成一行呢,可以使用浮動進行設定,但是這裡使用flex彈性盒子進行布局。

為上面的style标簽下添加如下CSS代碼如下:

ul {
    /* 讓父級容器添加“display: flex;”變成彈性盒子 */
    /* 讓行級元素變成塊級元素 */
    display: flex;
    /* 讓父級容器添加排列方向,預設是水準排列,row表示水準方向排列,column表示垂直方向排列 */
    flex-direction: row;
}
           

其中“display:flex;"是為要進行布局的元素的父級元素添加的,比如說這裡要布局li元素,是以就給ul元素添加flex即可。

而”flex-direction:row"表示讓flex布局下的子元素水準排列布局,而“flex-direction:column"表示讓子級元素垂直排列,比使用浮動更簡單。

等分布局

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title>測試</title>
		<style type="text/css">
			* {
				margin: 0;
				padding: 0;
				list-style: none;
			}

			ul {
				/* 使用flex彈性盒子布局 */
				display: flex;
			}

			li {
				/* 使每個li等分寬度 */
				flex: 1;
				border: 1px solid red;
			}
		</style>
	</head>
	<body>
		<ul>
			<li class="li1">首頁</li>
			<li class="li2">公告</li>
			<li class="li3">熱點</li>
			<li class="li4">聯系</li>
		</ul>
	</body>
</html>
           

預覽效果如下:

flex彈性盒子布局flex彈性布局的簡單使用

為要進行等分布局的父級元素添加”display:flex",為li元素添加“flex:1"即每個li都占四分之一的寬度,就實作了所謂的等分布局。

不等分布局

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title>測試</title>
		<style type="text/css">
			* {
				margin: 0;
				padding: 0;
				list-style: none;
			}

			ul {
				/* 使用flex彈性盒子布局 */
				display: flex;
			}

			li {
				border: 1px solid red;
			}

			.li1 {
				/* 占十分之一 */
				flex: 1;
			}

			.li2 {
				/* 占十分之二 */
				flex: 2;
			}

			.li3 {
				/* 占十分之三 */
				flex: 3;
			}

			.li4 {
				/* 占十分之四 */
				flex: 4;
			}
		</style>
	</head>
	<body>
		<ul>
			<li class="li1">首頁</li>
			<li class="li2">公告</li>
			<li class="li3">熱點</li>
			<li class="li4">聯系</li>
		</ul>
	</body>
</html>
           

浏覽效果:

flex彈性盒子布局flex彈性布局的簡單使用

分别為設定了"display:flex"的子元素設計flex的值,計算比例。

左固定右響應布局

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title>測試</title>
		<style type="text/css">
			* {
				margin: 0;
				padding: 0;
				list-style: none;
			}

			ul {
				/* 使用flex彈性盒子布局 */
				display: flex;
			}

			li {
				border: 1px solid red;
				text-align: center;
			}

			.li1 {
				/* 占300px */
				flex: 300px;
			}

			.li2,
			.li3,
			.li4 {
				/* .li2,.li3,li4平分剩下的寬度 */
				flex: 1;
			}
		</style>
	</head>
	<body>
		<ul>
			<li class="li1">首頁</li>
			<li class="li2">公告</li>
			<li class="li3">熱點</li>
			<li class="li4">聯系</li>
		</ul>
	</body>
</html>
           

浏覽效果如下:

flex彈性盒子布局flex彈性布局的簡單使用

設定flex彈性盒子布局,給子級元素li添加”flex“值,設定li1的元素為固定布局,即300px,而其餘三個元素li2,li3,li4平分剩下的寬度。

多行拆行布局

給父級元素添加”flex-warp:warp"表示超過寬度拆行(即起新的一行)進行處理。flex-wrap:nowrap表示不拆行,預設是不拆行的。

看如下代碼:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title>測試</title>
		<style type="text/css">
			* {
				margin: 0;
				padding: 0;
				list-style: none;
			}

			ul {
				/* 使用flex彈性盒子布局 */
				display: flex;
				/* 設定一個固定寬度 */
				width: 300px;
			}

			li {
				border: 1px solid red;
				text-align: center;
			}
		</style>
	</head>
	<body>
		<ul>
			<li class="li1">首頁</li>
			<li class="li2">公告</li>
			<li class="li3">熱點</li>
			<li class="li4">聯系</li>
			<li class="li1">首頁</li>
			<li class="li2">公告</li>
			<li class="li3">熱點</li>
			<li class="li4">聯系</li>
			<li class="li1">首頁</li>
			<li class="li2">公告</li>
			<li class="li3">熱點</li>
			<li class="li4">聯系</li>
		</ul>
	</body>
</html>
           

浏覽效果如下:

flex彈性盒子布局flex彈性布局的簡單使用

發現文字被換行了,寬度被壓縮了。

将ul的CSS樣式修改為如下:

ul {
    /* 使用flex彈性盒子布局 */
    display: flex;
    /* 給定一個固定寬度 */
    width: 300px;
    /* 子級元素多行進行拆行處理 */
    flex-wrap: wrap;
}
           

再次運作效果如下:

flex彈性盒子布局flex彈性布局的簡單使用

會發現文字内容沒有換行,而多餘的子元素被拆行了。

子級元素橫向排列

給父級元素添加“justify-content:center"表示使子級元素橫向排列居中顯示。其他的值如”flex-start"表示預設居左排列;“flex-end"表示居右排列;”center“表示居中排列;”space-between"表示兩端對齊;“space-around"表示元素兩邊間距一樣。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title>測試</title>
		<style type="text/css">
			* {
				margin: 0;
				padding: 0;
				list-style: none;
			}

			ul {
				/* 使用flex彈性盒子布局 */
				display: flex;
				/* 給定一個固定寬度 */
				width: 600px;
				/* 設定一個邊界進行觀察 */
				border: 1px solid blue;
				/* 子級元素橫向排列居中 */
				justify-content: center;
			}

			li {
				border: 1px solid red;
				text-align: center;
				width: 100px;
			}
		</style>
	</head>
	<body>
		<ul>
			<li class="li1">首頁</li>
			<li class="li2">公告</li>
			<li class="li3">熱點</li>
			<li class="li4">聯系</li>
		</ul>
	</body>
</html>
           

效果如下:

flex彈性盒子布局flex彈性布局的簡單使用

子級元素縱向排列

給父級元素添加”align-items:center"表示子級元素縱向居中排列。其他的值跟justify-content的值用法差不多。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title>測試</title>
		<style type="text/css">
			* {
				margin: 0;
				padding: 0;
				list-style: none;
			}

			ul {
				/* 使用flex彈性盒子布局 */
				display: flex;
				/* 給定一個固定寬度 */
				width: 600px;
				/* 給定一個固定高度便于觀察 */
				height: 200px;
				/* 設定一個邊界進行觀察 */
				border: 1px solid blue;
				/* 子級縱向排列居中 */
				align-items: center;
			}

			li {
				border: 1px solid red;
				text-align: center;
				width: 100px;
			}
		</style>
	</head>
	<body>
		<ul>
			<li class="li1">首頁</li>
			<li class="li2">公告</li>
			<li class="li3">熱點</li>
			<li class="li4">聯系</li>
		</ul>
	</body>
</html>
           

浏覽效果如下:

flex彈性盒子布局flex彈性布局的簡單使用

還有個align-content,其值和上面兩個差不多,隻是該屬性在有折行的情況才能顯示出效果:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title>測試</title>
		<style type="text/css">
			* {
				margin: 0;
				padding: 0;
				list-style: none;
			}

			ul {
				/* 使用flex彈性盒子布局 */
				display: flex;
				/* 給定一個固定寬度 */
				width: 400px;
				/* 給定一個固定高度便于觀察 */
				height: 200px;
				/* 設定一個邊界進行觀察 */
				border: 1px solid blue;
				/* 子級元素折行處理 */
				flex-wrap: wrap;
				/* 子級元素橫向居中布局 */
				justify-content: center;
				/* 在有折行的情況下,縱向居中排列 */
				align-content: center;
			}

			li {
				border: 1px solid red;
				text-align: center;
				width: 100px;
			}
		</style>
	</head>
	<body>
		<ul>
			<li class="li1">首頁</li>
			<li class="li2">公告</li>
			<li class="li3">熱點</li>
			<li class="li4">聯系</li>
			<li class="li1">首頁</li>
			<li class="li2">公告</li>
			<li class="li3">熱點</li>
			<li class="li4">聯系</li>
			<li class="li1">首頁</li>
			<li class="li2">公告</li>
			<li class="li3">熱點</li>
			<li class="li4">聯系</li>
		</ul>
	</body>
</html>
           
flex彈性盒子布局flex彈性布局的簡單使用