详解position属性

2017-08-15  本文已影响61人  落花的季节

position是CSS中非常重要的一个属性,通过position属性,我们可以让元素相对于其正常位置,父元素或者浏览器窗口进行偏移。

position的四种属性

//HTML
<div class="relative"></div>
<div></div>

//CSS
div{
  width:200px;
  height:100px;
  background:pink;
  border:1px solid;
}
.relative{
  position:relative;
  top:20px;
  left:20px;
  background:lightgreen
}

相对定位相对的是它原本在文档流中的位置而进行的偏移,并且原本的空间也占据着,下面的元素并不会顶替上去

元素设置成absolute后会脱离文档流,并且不占有原本的空间,后面的元素会顶替上去,而且不论元素是行内元素还是块级元素,都会生成一个块级框,也就是例如行内元素span设置了absolute后就可以设置height和width属性了。看下面例子:

//HTML
<span class="absolute"></span>
<div></div>

//CSS
div{
  width:200px;
  height:100px;
  background:pink;
}
.absolute{
  position:absolute;
  width:100px;
  height:100px;
  background:lightgreen;
  top:50px;
  left:20px;
}

注意:
relative和static方式在最外层时是以<body>标签为定位原点的,而absoulte方式在无父级是position非static定位时是以<html>作为原点定位。<html>和<body>元素相差9px左右。

//  HTML
<div class="relative"></div>
<div class="absolute"></div>

//CSS
.relative{
  position:relative;
  width:100px;
  height:100px;
  border:1px solid pink;
}

.absolute{
  position:absolute;
  width:100px;
  height:100px;
  border:1px solid lightgreen;
  top:0px;
}

看了上面的代码后,细心的朋友肯定要问了,为什么absoulte定位要加 top:0; 属性,这是不是多此一举呢?
其实加上这个属性是完全必要的,因为我们如果使用absoulte或fixed定位的话,必须指定 left、right、 top、 bottom 属性中的至少一个,否则left/right/top/bottom属性会使用它们的默认值 auto ,这将导致对象遵从正常的HTML布局规则,在前一个对象之后立即被呈递,简单讲就是都变成relative,会占用文档空间,这点非常重要,很多人使用absolute定位后发现没有脱离文档流就是这个原因,这里要特别注意~~~

.nav{
            position:fixed;
            top:0;
            z-index: 999;
}

给导航栏加上如上css就可以使导航栏固定在顶端。

参考资料:http://luopq.com/2015/11/15/css-position/

上一篇下一篇

猜你喜欢

热点阅读