欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

对双飞翼及圣杯布局的理解与认识

程序员文章站 2024-01-26 12:45:04
...

对双飞翼和圣杯布局的详解。

这两个布局的最终目的都是一样的,实现中间部分的优先渲染,圣杯是国外传入的,双飞翼是淘宝UED发明的,双飞翼相对圣杯对了一个div,但是不需要相对定位,也少了几个css。

首先说圣杯,是通过相对定位实现的。

HTML

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>圣杯</title>
</head>
<body>
    <div class="header"></div>
	<div class="container">
	<div class="middle"></div>
	<div class="left"></div>
	<div class="right"></div>
    </div>
	<div class="footer"></div>
</body>
</html>

首先让让容器container左右各留下220px200px的内边距,并让容器内的元素都浮动,如下效果,leftright因为宽度不够被挤到下一行

对双飞翼及圣杯布局的理解与认识

middle(蓝),left(红),right(绿)进行相关定位先通过对leftmargin-left-220px;将它上移,效果如下

对双飞翼及圣杯布局的理解与认识

再将left左移100%,通过这样就向左移动整个宽度,移动到预留好的左侧空间上

对双飞翼及圣杯布局的理解与认识

再对right进行margin-left-200px,移动都上层图示位置

对双飞翼及圣杯布局的理解与认识

再将right右移200px,通过right-200px来实现,达到最终效果

对双飞翼及圣杯布局的理解与认识

css代码如下

<style type="text/css">
		*{margin: 0;padding: 0;}
		.header,.footer{
			background: black;
			height: 80px;
			width: 100%;
		}
		.container{
			height: 300px;
			padding: 0 200px 0 220px;
			background: green;
		}
		.middle,.left,.right{
			position: relative;
			float: left;
			height: 300px;
		}
		.middle{
			width: 100%;
			background: blue;
		}
		.left{
			width: 220px;
			background: red;
			margin-left: -220px;
            left: -100%;
		}
		.right{
			width: 200px;
			background:green;
			margin-left: -200px;
			right: -200px;	
		}
		

	</style>


接下来是双飞翼

HTML部分

双飞翼
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>双飞翼</title>
</head>
<body>
	<div class="header"></div>
	<div class="container">
		<div class="mainner"></div>
    </div>
	<div class="left"></div>
	<div class="right"></div>	
	<div class="footer"></div>

</body>
</html>

双飞翼是先通过margin-leftmargin-right将中间部分mainner(蓝色)在其容器中置于图示位置,在容器的左右两侧留下空间,并将容器与left(红)和right(绿)一起浮动

对双飞翼及圣杯布局的理解与认识

再通过margin-left-100%left上移正行,至左侧预留的位置

对双飞翼及圣杯布局的理解与认识

再将right进行margin-left-200px移至上层右侧预留位置,达到最终效果

对双飞翼及圣杯布局的理解与认识

css代码入下

<style type="text/css">
		*{margin: 0;padding: 0;}
		.header,.footer{
			height: 80px;
			width: 100%;
			background: black;
			float: left;
		}
		.container{
			width: 100%;
			height: 300px;
		}
		.container,.left,.right{
			float: left;
			height: 300px;
		}
		.mainner{
			height: 300px;
			background: blue;
			margin-left: 220px;
			margin-right: 200px;
		}
		.left{
            background: red;
            width: 220px;
            margin-left: -100%;
		}  
		.right{
			background: green;
			width: 200px;
			margin-left: -200px;
		}
	</style>