博客列表 >第八次作业 圣杯三列布局 201803291503

第八次作业 圣杯三列布局 201803291503

薛光举的博客
薛光举的博客原创
2018年03月29日 15:16:39724浏览

三列布局是网页的常用布局,有绝对定位三列布局,双飞翼三列布局,圣杯三列布局。

绝对定位三列布局:

1. 先创建一个定位父级区块:relative

2. 左右侧边栏,采用约定定位:position: absolute;

3. 中间主体使用maring外边距进行挤压形成

4. 如果定位父级定宽,中间区域就是定宽,否则自适应,

5.中间宽度随父级定宽变化

双飞翼三列布局

第1步: 创建一个大容器container,设置页面总宽度并左右居中

                   .container {

                   min-width: 1000px;

                   margin: auto;

                   background-color: yellow;

         }

         第2步:创建三列DOM结构,顺序非常重要,

                   <div>

                   <div>

                            <div>主体</div>

                   </div>

                   <div>左侧</div>

                   <div>右侧</div>

         </div>

         第3步:main,left,right全部左浮动,因为前面的wrap块宽度为100%,必须导致left,right全部被挤到了下面

         第4步: left设置,margin:-1000px;或者 margin-left:-100%;

          (100%就是父级块的宽度1000px,负数表示方向相反,即向左缩进,最终到达父块起始点:0,0)

         第5步: right设置,参考left,只需要margin-left: -200px;

         第6步: content内容块,添加左右外边距,将内容区挤压出来: margin: 0 200px;

                   并给一个宽度100%,直接引用父级块宽度

下面是圣杯三列布局练习,不足之处,请多多指教。

实例

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>4.经典的三列圣杯布局</title>
	<style type="text/css">
	.header, .footer {
		width: 100%;
		height: 60px;
		background-color: lightgray;
	}
	.footer {
	/*清除浮动*/
		clear: both;
	}
	.content {
		width: 1000px;
		height: 100%;
		background-color: gray;
		margin: auto;
		text-align: center;
		line-height: 60px;
	}
	.container {
		width: 600px;
		background-color: yellow;
		/*父容器自身以及内部所有区块main,left,right水平居中*/
		margin:auto;
		/*使它能包住浮动区块*/
		overflow: hidden;  
		/*因为左右区块现在覆盖在main之上,挡住了main的内容,现在添加padding来实现自身内容显示*/
		padding:0 200px;	
	}
	  .main {
		/*因为暂无内容,先给main,left,right设置一个最小行高*/
		min-height: 650px;
		/*宽必必须为100%,即与父元素container一致,这样才能使left,right挤下来*/
		width: 100%;
		float:left;
		/*设置参考背景色:小麦色*/
		background-color: wheat; 
	}
	  .left {
		/*除main外,left和right必须设置宽度*/
		width: 200px;
		min-height: 650px;		
		/*左浮动后,因为前面main占据100%宽度,所以自动挤到下一行首*/
		float:left;
		/*设置左外边距margin为-100%,使它回到main区块的起始点处*/
		margin-left: -100%;
		/*关键步骤:相对定位,向左为负200,相当于向右移动200px;*/
		position: relative;
		left: -200px;	
		/*设置参考背景色:天蓝色*/
		background-color: skyblue; 
	}
	  .right {
		width: 200px;
		min-height: 650px;
		/*左浮动后,因为前面main占据100%宽度,所以自动挤到下一行,
		并且还遇到前面已经浮动过来的left左侧的区块,所以排到left右边*/
		float:left;
		/*设置左外边距为当前宽度的负值,使之定位到main区块的右边*/
		margin-left:-200px;	
		/*关键步骤:设置为相对定位,right:-200px意思是向左边移动200px;*/
		position: relative;
		right:-200px;
		background-color: green;
	}
	</style>
</head>
<body>
<!-- DOM结构 -->
<!-- 头部 -->
<div class="header">
	<div class="content">网站头部</div>
</div>
<!-- 内容区 -->
<div class="container">
	<div class="main">主体</div>
	<div class="left">左侧</div>
	<div class="right">右侧</div>
</div>
<!-- 底部 -->
<div class="footer">
	<div class="content">网站底部</div>
</div>

</body>
</html>

运行实例 »

点击 "运行实例" 按钮查看在线实例

圣杯布局的基本思路与实现步骤:

1.DOM结构的特点: 

1.1: 必须一个父级容器container

1.2内部的三列,主体main必须在最前面,确保优先渲染,其次是left和right

2.区块宽度和高度的特点:

2.1: main+left+right = 总宽度

2.2: 父区块container宽度 = main宽度

2.3: 宜先设置container宽度,如1000px,main的width:100%即可;

3.三个区块必须全部左浮动:

4.将浮动区块left和right上移到main区块的指定位置 

4.1: 通过给left和right设置负的左外边距margin-left来实现浮动区块的反向移动;

4.2: left必须跨越整个main区块才可以到达定位的起点: margin-left:-100%; 

4.3: right区块是在右边显示,所以只要跨过自己的宽度就可以: margin-left:200px;

5. 给container添加内边距,进行挤压完成布局,这也是圣杯布局的精妙之处

5.1: 添加左右内边距padding,宽度等于left和right

5. 将main区块的内容完整的显示出来

left: relative; left: -200px;(距离左边-200px)反向移动

right: relative; right: -200px;(距离右边-200px)反向移动

7.jpg


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议