<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Position</title>
<link rel="stylesheet" href="Position_set.css"/>
</head>
<body>
<div class="box" id="one">one</div>
<div class="box" id="two">two</div>
<div class="box" id="three">three</div>
<div class="box" id="four">four</div>
</body>
</html>
CSS文件:
@charset "utf-8";
.box {
display: inline-block; /*inline表示横向排列,不能设置宽高,block表示纵向排列*/
100px;
height: 100px;
background: red;
color: white;
}
#two {
position: sticky;
top: 50px;
left: 60px;
background: blue;
}
Position的四个属性值
- relative
- absolute
- fixed
- static
下面分别讲述这四个属性
1.relative
relative是相对它本身的位置来进行偏移的。当设置了relative属性的时候,将根据top,right,bottom,left的值按照它理应所在的位置进行偏移,设置了relative的部分不会影响其他部分的位置。
2.absolute
当position设置为absolute后,其到底以谁为对象进行偏移呢?这里分为两种情况(来源于网络):
(1) 当父对象(或曾祖父,只要是父级对象)parent也设置了position属性,且position的属性值为absolute或者relative时,不是默认值的情况,此时按照这个parent来进行定位。
对象虽然确定好了,但有些细节需要注意,那就是我们到底以parent的哪个定位点来进行定位呢?如果parent设定了margin,border,padding等属性,那么这个定位点将忽略padding,将会从padding开始的地方(即只从padding的左上角开始)进行定位,也就是忽略padding,当然并不会忽略margin和border。 接下来的问题是,由于当position设置为absolute后,会导致absolute部分溢出正常的文档流,就像它不属于 parent一样,它漂浮了起来,在DreamWeaver中把它称为“层”,其实意思是一样的。此时其他部分将获得已absolute部分的位置,它的文档流不再基于已设置的部分,而是直接从parent开始。
(2) 如果不存在一个有着position属性的父对象,那么就会以body为定位对象,按照浏览器的窗口进行定位。
3.fixed
fixed总是以body为定位对象的,按照浏览器的窗口进行定位,即使拖动滚动条,位置也不会改变。
4.static
position的默认值,一般不设置position属性时,会按正常的文档流进行排列。