详解定位—>"position"

  position是css中一个重要的属性,他规定元素的定位类型,默认值为static,他的值有5种,absolute,fixed,relative,static,inherit。接下来将详细具体对每个值进行分析。css

1.任性的absolute:浏览器

  绝对定位。相对于 static 定位之外的第一个父元素进行定位。元素的位置经过 "left", "top", "right" 以及 "bottom" 属性进行规定。设置此属性值为 absolute 会将对象拖离出正常的文档流(即在文档中已经不占据位置)绝对定位,而不考虑它周围内容的布局。假如其余具备不一样 z-index 属性的对象已经占据了给定的位置,他们之间不会相互影响,而会在同一位置层叠,也就是说,absolute能够无视本来被占据的位置,任性到能够在他想要占据的位置显示出来,还真是潇洒啊~布局

  他的根据父级对象来定位,若是父级没有position定位,那么他将以浏览器左上角为原始点进行定位。若是父级有position定位,那么他将以距他最经的父级元素的左上角为原始点进行定位。测试

2。专注的fixed:spa

  固定定位。相对于浏览器左上角定位,素的位置经过 "left", "top", "right" 以及 "bottom" 属性进行规定。当咱们须要使一个层相对于浏览器来自动调整该层的位置的时候,若是你使用position的absolute属性来定位该层,你会发现absolute属性并不能达到你想要的css效果,这时,就须要要用到fixed属性来定位该层了。举个例子:对象

<div class="div1">层1</div>
<div class="div2">层2</div>blog

css:继承

.div1{文档

  background-color:#f00;it

  height:2000;

  width:2000;

}

.div2:{

  background-color:#3f6;

  height:100px;

  width:100px;

  position:fixed;

  left:50px;

  top:50px;

}

效果图:

不管上下左右滚动滚动条,层2 在浏览器页面中相应的位置是不会变的,而这正是absolute作不到的。

3.relative

  相对定位。生成相对定位的元素,相对于其正常位置进行定位。所以,"left:20" 会向元素的left位置添加 20 像素。参照父级(最近)的内容区的左上角为原始点结合TRBL属性进行定位(或者说相对于被定位元素在父级内容区中的上一个元素进行偏移),无父级则以BODY的左上角为原始点。相对定位是不能层叠的。在使用相对定位时,不管元素是否进行移动,元素依然占据原来的空间。所以,移动元素会致使它覆盖其余框。

4.static

  默认值。没有定位,元素出如今正常的流中(忽略 top, bottom, left, right 或者 z-index 声明)

5.inherit

  规定应该从父元素继承 position 属性的值。"inherit"不支持全部包括IE8和以前版本IE浏览器,IE九、IE10还没测试过

  咱们都知道absolute是绝对定位,relative是相对定位,可是这个绝对与相对是什么意思呢?绝对是什么地方的绝对,相对又是相对于什么地方而言的呢?那他们又有什么样的特性,能够作出什么样的效果呢?关于二者之间又有什么样的技巧呢?

  通常来说,网页居中的话用absolute就容易出错,由于网页一直是随着分辨率的大小自动适应的,而absolute则会以浏览器的左上角为原始点,不会由于分辨率的变化而变化位置。有时还须要依靠z-index来设定容器的上下关系,数值越大越在最上面,数值范围是天然数。固然有一点要注意,父子关系是没法用z-index来设定上下关系的,必定是子级在上父级在下。

  设置此属性值为 relative 会保持对象在正常的HTML流中,可是它的位置能够根据它的前一个对象进行偏移。在相对(relative)定位对象以后的文本或对象占有他们本身的空间而不会覆盖被定位对象的天然空间。与此不一样的,在绝对(absolute)定位对象以后的文本或对象在被定位对象被拖离正常文档流以前会占有它的天然空间。放置绝对(absolute)定位对象在可视区域以外会致使滚动条出现。而放置相对(relative)定位对象在可视区域以外,滚动条不会出现。其实对于定位的主要问题是要记住每一个定位的意义。相对定位是“相对于“元素在文档流中初始位置的,而绝对定位是”相对于“最近的已经定位的祖先元素。 

相关文章
相关标签/搜索