css圣杯布局和双飞翼布局(超详细)

参考文章

圣杯布局

大抵就是一个左右两边固定宽度,中间宽度自适应的三栏式布局。
如下图所示:
css圣杯布局和双飞翼布局(超详细)_第1张图片
大致要求是:

  • header和footer固定高度;
  • 左右两边固定宽度;
  • 中间宽度自适应;
  • 中间部分的高度是三栏中最高的区域的高度。

实现过程(顺序无所谓):
1、先定义好header 和footer,container 和其中的left , right ,middle.其中middle在最前面


<html>
	<head>
		<meta charset="utf-8">
		<meta name="viewport" content="width=device-width,initial-scale=1.0">
		<title>圣杯布局练习title>
		<link href="css/shengb.css" rel="stylesheet">
	head>
	<body>

		
		<header>
			header
		header>
		<div class="container">
			<div class="middle">middle<p>hellop>div>
			<div class="left">leftdiv>
			<div class="right">rightdiv>
		div>
		<footer>
			footer
		footer>
	body>
html>

为提高代码优化,css样式建议加入以下。

* {
     
	box-sizing: border-box;
}
body {
     
	margin: 0;
	color: #fff; /*为了适应背景 把字体颜色调成白色*/
}

2、设置footer和header的样式

header {
     
	width: 100%;
	height: 50px;
	background: #6daca7;
	line-height: 50px;
	text-align: center;
}
footer {
     
	width: 100%;
	height: 30px;
	background: #52797a;
	clear: both;
	line-height:30px;
	text-align: center;
}

3、分别设置left , middle ,right 的样式, 左边宽度为200px, 右边宽度为150px, 中间宽度为100%
并且设置为相对定位,左浮动。

.left , .right, .middle {
     
	position: relative;
	float: left;
}
.left {
     
	width: 200px;
	background: #1b4887;
}
.right {
     
	width: 150px;
	background: #578353;
}
.middle {
     
	width: 100%;
	background: #138686;
}

这时候的布局是这样的:
css圣杯布局和双飞翼布局(超详细)_第2张图片
4、这时候把左边left的margin-left设置为-100%,把它推到middle的左边
css圣杯布局和双飞翼布局(超详细)_第3张图片
5、这时我们发现left把middle遮住了,看上面的middle不见了。只需要在container上加上 padding-left: 200px;padding-right: 150px;,在左右两边为left 和 right 留出空间( left 和 right 的宽度)。
css圣杯布局和双飞翼布局(超详细)_第4张图片
6、 接下来把left左移,用到相对定位。在left盒子上设置left属性为-200px(刚好是left的宽度),这样left的位置就对了,也没有遮住middle。
css圣杯布局和双飞翼布局(超详细)_第5张图片
7、接下来把right移动到正确的位置。只需要设置margin-right: -150px。把它推到middle的右边。
css圣杯布局和双飞翼布局(超详细)_第6张图片
总结:只要是float的盒子,它就是脱离普通流的。
css代码地址

双飞翼布局

相比圣杯布局,双飞翼布局在container多了一个子节点,为其左右两边设置margin-left 和 margin-right ,为left 和 right留出空间。双飞翼布局不是像圣杯布局那样使用相对定位,而是在middle内部新增一个子节点,并设置它的margin-left 和 margin-right ,这样left设置margin-left为100%之后就不会被遮挡了,而right只需要margin-left: 150px就可以。相比来说,双飞翼布局比圣杯布局更简单,没有用到定位。以下是双飞翼布局的css样式代码。

* {
     
	box-sizing: border-box;
}
body {
     
	margin: 0;
	color: #fff;
}
header {
     
	width: 100%;
	height: 50px;
	background: #6daca7;
	line-height: 50px;
	text-align: center;
}
header {
     
	width: 100%;
	height: 50px;
	background: #6daca7;
	line-height: 50px;
	text-align: center;
}
footer {
     
	width: 100%;
	height: 30px;
	background: #52797a;
	clear: both;
	line-height:30px;
	text-align: center;
}
.container {
     
	
}
.left , .right, .middle {
     
	float: left;
}
.left {
     
	width: 200px;
	background: #18b0b0;
	margin-left: -100%; 
}
.right {
     
	width: 150px;
	background: #2a6f82c7;
	margin-left:-150px;

}
.middle {
     
	width: 100%;
}
.middle .sub {
     
	margin-left: 200px;
    margin-right: 150px;
    min-height: 150px;
	background: #184a7cad;
}

如有任何错误,烦请指正。
本作者从未收到过来自广大csdner的点赞,乞求看到这里的各位大大帮忙点个赞好吗?太卑微了我。

你可能感兴趣的:(笔记,html,css,css3)