DIV+CSS定位position

本文详细介绍了CSS中的四种定位方式:static、relative、absolute及fixed的区别与用法。通过具体实例展示了不同定位属性如何影响页面布局。

position属性

该属性是用于对元素进行定位。

css的三种定位机制

普通流,浮动和绝对定位

普通流:普通流中的元素的位置由元素在 (X)HTML 中的位置决定。普通流包含了相对定位给,元素依然占据普通流中的起始位置,可以根据起始位置进行偏移。

浮动:脱离了普通流,不会被普通流中的元素影响定位,但会被同样是浮动的元素影响。

绝对定位:脱离了普通流,不会占据普通流中的元素位置以及不被其中的元素影响,位置被所属包块影响。

position的属性值static,relative,absolute,fixed

static:

元素框正常生成。块级元素生成一个矩形框,作为文档流的一部分,行内元素则会创建一个或多个行框,置于其父元素中。

relative:

元素框偏移某个距离。元素仍保持其未定位前的形状,它原本所占的空间仍保留。

absolute

元素框从文档流完全删除,并相对于其包含块定位。包含块可能是文档中的另一个元素或者是初始包含块。元素原先在正常文档流中所占的空间会关闭,就好像元素原来不存在一样。元素定位后生成一个块级框,而不论原来它在正常流中生成何种类型的框。

fixed

元素框的表现类似于将 position 设置为 absolute,不过其包含块是视窗本身。

图解说明

static:

因为staticBox是块级元素,而其又在普通流中,所以static的div占据了一行,然后从上往下展示其他div。


代码:

<html>
         <head>
                   <styletype="text/css">
                            .mainBox{
                                     margin:0px10px;
                                     width:400px;
                                     height:400px;
                                     position:relative;
                                     background:#FF0000;
                            }
                            .sourceBox{
                                     float:left;
                                     width:100px;
                                     height:100px;
                                     position:relative;
                                     background:#00FFFF;
                            }
                            .staticBox{
                                     width:100px;
                                     height:100px;
                                     position:static;
                                     background:#00FF00;
                            }
                   </style>
         </head>
         <body>
                   <divclass="staticBox">staticBox
                   </div>
                   <divclass="mainBox">
                            <divclass="sourceBox">
                            </div>
                            <divclass="sourceBox">
                            </div>
                            <divclass="sourceBox">
                            </div>
                            <divclass="sourceBox">
                            </div>
                            <divclass="sourceBox">
                            </div>
                            <divclass="sourceBox">
                            </div>
                            <divclass="sourceBox">
                            </div>
                   </div>
         </body>
</html>

relative:

因为relativeBox依然归属于普通流的范围内,其依然占据起始位置,然后使用偏移属性left,top,right,bottom进行属性设置。


<html>
	<head>
		<style type="text/css">
			.mainBox{
				float:left;
				margin:0px 10px;
				width:400px;
				height:400px;
				position:relative;
				background:#FF0000;
			}
			.sourceBox{
				float:left;
				width:100px;
				height:100px;
				position:relative;
				background:#00FFFF;
			}
			.relativeBox{
				z-index:10;
				float:left;
				width:100px;
				height:100px;
				position:relative;
				left:50px;
				top:50px;
				background:#00FF00;
			}
		</style>
	</head>

	<body>
		<div class="mainBox">
			<div class="sourceBox">
			</div>
			<div class="relativeBox">relativeBox
			</div>
			<div class="sourceBox">
			</div>
			<div class="sourceBox">
			</div>
			<div class="sourceBox">
			</div>
			<div class="sourceBox">
			</div>
			<div class="sourceBox">
			</div>
			<div class="sourceBox">
			</div>
		</div>
	</body>

</html>

absolute:

因为脱离了普通流,所以其不影响普通流中的其他元素位置。


<html>
	<head>
		<style type="text/css">
			.mainBox{
				float:left;
				margin:0px 10px;
				width:400px;
				height:400px;
				position:relative;
				background:#FF0000;
			}
			.sourceBox{
				float:left;
				width:100px;
				height:100px;
				position:relative;
				background:#00FFFF;
			}
			.absoluteBox{
				z-index:10;
				width:100px;
				height:100px;
				position:absolute;
				left:50px;
				top:50px;
				background:#00FF00;
			}
		</style>
	</head>

	<body>
		<div class="mainBox">
			<div class="sourceBox">
			</div>
			<div class="absoluteBox">absoluteBox
			</div>
			<div class="sourceBox">
			</div>
			<div class="sourceBox">
			</div>
			<div class="sourceBox">
			</div>
			<div class="sourceBox">
			</div>
			<div class="sourceBox">
			</div>
			<div class="sourceBox">
			</div>
		</div>
	</body>
</html>

fixed:

该属性与absolut类似,但是其所属包块一直属于窗口,所以其偏移位置是以窗口的原点为起始的。即时出现滚动条,滚动滚动条时,fixedBox的位置会重新计算,会跟随滚动条一起滚动。类似于一般窗口的跟随广告。


<html>
	<head>
		<style type="text/css">
			.mainBox{
				margin:0px 10px;
				width:400px;
				height:400px;
				position:relative;
				background:#FF0000;
			}
			.sourceBox{
				float:left;
				width:100px;
				height:100px;
				position:relative;
				background:#00FFFF;
			}
			.fixedBox{
				z-index:10;
				width:100px;
				height:100px;
				position:fixed;
				left:50px;
				top:50px;
				background:#00FF00;
			}
		</style>
	</head>

	<body>
		<div class="fixedBox">fixedBox
		</div>
		<div class="mainBox">
			<div class="sourceBox">
			</div>
			<div class="sourceBox">
			</div>
			<div class="sourceBox">
			</div>
			<div class="sourceBox">
			</div>
			<div class="sourceBox">
			</div>
			<div class="sourceBox">
			</div>
			<div class="sourceBox">
			</div>
			<div class="sourceBox">
			</div>
		</div>
		<div class="mainBox">
			<div class="sourceBox">
			</div>
			<div class="sourceBox">
			</div>
			<div class="sourceBox">
			</div>
			<div class="sourceBox">
			</div>
			<div class="sourceBox">
			</div>
			<div class="sourceBox">
			</div>
			<div class="sourceBox">
			</div>
			<div class="sourceBox">
			</div>
		</div>
		<div class="mainBox">
			<div class="sourceBox">
			</div>
			<div class="sourceBox">
			</div>
			<div class="sourceBox">
			</div>
			<div class="sourceBox">
			</div>
			<div class="sourceBox">
			</div>
			<div class="sourceBox">
			</div>
			<div class="sourceBox">
			</div>
			<div class="sourceBox">
			</div>
		</div>
	</body>
</html>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

-贫寒豌豆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值