Position

<!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的四个属性值

  1. relative
  2. absolute
  3. fixed
  4. 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属性时,会按正常的文档流进行排列。

原文地址:https://www.cnblogs.com/xiaohu12138/p/9711726.html