绝对定位和相对定位(absolute与relative)
绝对定位和相对定位
很多朋友问absolute与relative怎么区分,怎么用?我们都知道absolute是绝对定位,relative是相对定位,但是这个绝对与相对是什么意思呢?
绝对是什么地方的绝对,相对又是相对于什么地方而言的呢?那他们又有什么样的特性,可以做出什么样的效果呢?关于两者之间又有什么样的技巧呢?下面我们就来一一解读。
Absolute,CSS中的写法是:position:absolute; 他的意思是绝对定位,他是参照浏览器的左上角,配合TOP、RIGHT、BOTTOM、LEFT(下面简称TRBL)进行定位,在没有设定TRBL,默认依据父级的做标原始点为原始点。
如果设定TRBL并且父级没有设定position属性,那么当前的absolute则以浏览器左上角为原始点进行定位,位置将由TRBL决定。
一般来讲,网页居中的话用Absolute就容易出错,因为网页一直是随着分辨率的大小自动适应的,而Absolute则会以浏览器的左上角为原始点,不会应为分辨率的变化而变化位置。
很多人出错就在于这点上出错。而网页居左其特性与Relative很相似,但是还是有本质的区别的。
Relative,CSS中的写法是:position:relative; 他的意思是相对定位,他是参照父级的原始点为原始点,无父级则以文本流的顺序在上一个元素的底部为原始点,配合TRBL进行定位,当父级内有padding等CSS属性时,当前级的原始点则参照父级内容区的原始点进行定位。
有时我们还需要依靠z-index来设定容器的上下关系,数值越大越在最上面,数值范围是自然数。
如何使DIV层水平居中问题的一点解释
之前解决层居中的方法是先用div套一层,将text-align设为center,然后里面层的margin-left和margin-right设为auto,即可居中。
body {text-align: center;}
div {margin-right: auto; margin-left: auto;}
无意中发现text-align的设置在这里是没有作用的,text-align只对inline element(内联元素的解释请参阅前一篇)起作用,在这里只需要将margin-left和margin-right设置成auto,并且给要居中的层的width赋一个确定的值就可以达到居中的效果。
div {margin-right: auto; margin-left: auto;width:200px;}
下面分情况分析:
全部都设为具体值,则margin-right被自动设为auto以满足条件方式
当它们之中只有一个被设为auto时:比如{margin-left:auto; margin-right:100px; width:100px;} ,这时margin-left会被拉伸至满足条件,其它类似
当有两个被设为auto时:(a)如果是两个margin被设为auto,则margin-left与margin-right长度相同,这就产生了居中的效果; (b)如果width和某一个margin设为auto,则这个margin等于0
当三个值都设为auto时,等价于将margin设为0,width设为auto
怎样使一个div层居中于浏览器中?
如下图操作所示: