定义

position属性指定一个元素(静态的,相对的,绝对或固定)的定位方法的类型。

特点

这个属性定义建立元素布局所用的定位机制。任何元素都可以定位,不过绝对或固定元素会生成一个块级框,而不论该元素本身是什么类型。相对定位元素会相对于它在正常位置中的默认位置偏移。

用法示例

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<style>
			.1{
				width: 100px;
				height: 100px;
				position: absolute;
			}
		</style>
	</head>
	<body>
		<div id="out">
			<div class="1" style="background-color: red"></div>
		</div>
	</body>
</html>

position的五种属性值

static

默认值。没有定位。多个postion为默认值的元素将按代码中编写顺序从上到下排列。

例如

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style>
			div{
				width: 60px;
				height: 60px;
				position: static;
			}
		</style>
	</head>
	<body>
		<div style="background-color: #4C92FC;"></div>
		<div style="background-color: #E1E3E5;"></div>
		<div style="background-color: #E3AF29;"></div>
		<div style="background-color: green;"></div>
	</body>
</html>

效果为

HTML5频谱 html5position_进度条

 fixed

生成固定定位的元素,相对于浏览器窗口进行定位

元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定。

例如:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style>
			div{
				width: 60px;
				height: 60px;
				position: fixed;
			}
		</style>
	</head>
	<body>
		<div style="background-color: #4C92FC;"></div>
		<br />
		<br />
		<br />
		<br />
		<br />
		<br />
		<br />
		<br />
		<br />
		<br />
		<br />
		<br />
		<br />
		<br />
		<br />
		<br />
		<br />
		<br />
		<br />
	</body>
</html>

添加br标签的目的是增加浏览器中内容,使得窗口中的进度条需要拖动来显示更多文本,以此验证fixed修饰的元素相对与浏览器窗口定位

效果为:

HTML5频谱 html5position_HTML5频谱_02

可以看到此时该元素处于窗口左上角(默认),接着我们拖动进度条,往下移动

HTML5频谱 html5position_HTML5频谱_03

发现元素仍然处于浏览器窗口的左上角

relative

生成相对定位的元素,相对于其正常位置进行定位。

因此,"left:20" 会向元素的 LEFT 位置添加 20 像素。

例如:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style>
			div{
				width: 60px;
				height: 60px;
				position: static;
			}
			#remove{
				width: 60px;
				height: 60px;
				position: relative;
				bottom: 20px;//原有位置在改变后位置下方20像素处
				left: 60px;//原有位置在改变后位置左方60像素处
			}
		</style>
	</head>
	<body>
		<div id="remove" style="background-color:red ;"></div>
		<div style="background-color:gray ;"></div>
		<div style="background-color:green ;"></div>
		<div style="background-color:blue ;"></div>
	</body>
</html>

效果为

HTML5频谱 html5position_HTML5频谱_04

 

absolute

生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位。

元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定。

例如

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style>
			div{
				width: 60px;
				height: 60px;
				position: relative;
			}
			#remove{
				width: 60px;
				height: 60px;
				position: absolute;
				bottom: 20px;
				left: 60px;
			}
			.stay{
				width: 60px;
				height: 60px;
				position: static;
			}
		</style>
	</head>
	<body>
		<div style="background-color: #4C92FC;">//作为非static位置的父元素
			<div id="remove" style="background-color: #E3AF29;"></div>//位置为absolute的子元素
		</div>
		<div class="stay" style="background-color: #E1E3E5;">//作为位置为static的父元素
			<div id="remove" style="background-color: gold;"></div>//位置为absolute的子元素
		</div>
	</body>
</html>

效果为:

HTML5频谱 html5position_进度条_05

 

可以看到,第一个子元素由于父元素非static位置,因此相对父元素所移动位置,而第二个子元素由于父元素为static位置,所以相对浏览器窗口所移动,但和fixed不同,这个移动并不会跟随浏览器窗口,也就是说拖动滚动条,这个元素的位置会改变,不是定位在窗口视角的某处。

inherit

规定应该从父元素继承 position 属性的值。