1. 程式人生 > >css佈局——雙飛翼佈局和聖盃佈局

css佈局——雙飛翼佈局和聖盃佈局

雙飛翼佈局和聖盃佈局都將介面分為左中右三部分,中間部分是主體部分。

聖盃佈局實現程式碼:

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style type="text/css">
	.test
	{
		height: 300px;
		padding:0 400px 0 200px;
	}
	.main
	{
		float: left;
		width: 100%;
		background-color: red;
		height: 300px;
		  word-break: break-all;
	}
	.left
	{
		float: left;
		background-color: yellow;
		width: 200px;
		margin-left: -100%;
		height: 300px;
		position: relative;
		left:-200px;
		  word-break: break-all;
	}
	.right
	{
		float: left;
		background-color: blue;
		width: 400px;
		margin-left: -400px;
		height: 300px;
		position: relative;
		left: 400px;
		  word-break: break-all;
	}
</style>
</head>
<body>
<div class="test">
	<div class="main">main</div>
	<div class="left">left</div>
	<div class="right">right</div>
</div>
</body>
</html>


解釋:

1.main寫在最前面(for 載入時先載入main部分),用margin將left拉到main的左邊,將right拉到它的右邊,注意此時left和right是覆蓋main部分的

2. main部分的寬度是100%,這說明它會佔滿一行,為了空出空間給left和right,需要對他們三外面的容器test進行設定:padding:0 400px 0 200px;

3. 接下來把空出來的部分分配給left和right,這裡用到相對定位。.left{position:relative;left:-200px;}

雙飛翼佈局實現程式碼如下:

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style type="text/css">
	.test
	{
		height: 300px;
	}
	.main
	{
		float: left;
		width: 100%;
		background-color: red;
		height: 300px;
		word-break: break-all;
	}
	.left
	{
		float: left;
		background-color: yellow;
		width: 200px;
		margin-left: -100%;
		height: 300px;
		word-break: break-all;
	}
	.right
	{
		float: left;
		background-color: blue;
		width: 400px;
		margin-left: -400px;
		height: 300px;
		  word-break: break-all;
	}
	.main_n
	{
		margin:0 400px 0 200px;
	}
</style>
</head>
<body>
<div class="test">
	<div class="main"><div class="main_n">main</div></div>
	<div class="left">left</div>
	<div class="right">right</div>
</div>
</body>
</html>

解釋:

雙飛翼佈局跟聖盃佈局實現的目標相同,實現手法區別主要在於後面的main定位。

當left和right佔領main身體時,聖盃佈局通過外部容器padding來實現left和right與main分離,而雙飛翼佈局則直接在main內定義一個div,通過該div的padding為left和right讓出空間。

看圖得區別:

聖盃佈局:

雙飛翼佈局: