css中absolute和relative的区别?

html-css019

css中absolute和relative的区别?,第1张

absolute是绝对定位;而relative是相对定位;

解释:

绝对定位就是相对于父元素的定位,不受父元素内其他子元素的影响;

而相对定位是相对于同级元素的定位,也就是上一个同级元素。

区别

区别是指两个或两个以上的事物间的不同,一般是在存在共同点的情况下说有"区别",世间万物,不可能任何东西都是一样的,世上没有两片一样的叶子。当两种相似的事物作比较时,它们的不同点便是区别。

CSS样式中的postion元素,它有四个不同的属性,即static | absolute | fixed | relative。

static : 默认值。无特殊定位,对象遵循HTML定位规则

absolute : 绝对的。将对象从文档流中拖出,使用 left , right , top , bottom

等属性相对于其最接近的一个最有定位设置的父对象进行绝对定位。如果不存在这样的父对象,则依据 body 对象。而其层叠通过 z-index 属性定义

fixed : 固定的。对象定位遵从绝对(absolute)方式。但是要遵守一些规范

relative : 对象不可层叠,但将依据 left , right , top , bottom 等属性在正常文档流中偏移位置

一:绝对定位

position: absolute绝对定位:绝对定位是相对于元素最近的已定位的祖先元素(即是设置了绝对定位或者相对定位的祖先元素)。如果元素没有已定位的祖先元素,那么它的位置则是相对于最初的包含块(body)。

绝对定位本身与文档流无关,因此不占空间,普通文档流中的元素的布局就当绝对定位的元素不存时一样,所以 它们可以覆盖页面上其他的元素,且可以通过z-index属性来控制这些层的对方顺序。

#box_relative {

position: absolute

left: 30px

top: 20px

}

二:相对定位

position: relative相对定位:相对定位是相对于元素在文档中的初始位置——首先它出现在它所在的位置上(即不设置position时的位置,然后通过设置垂直或水平位置,让这个元素“相对于”它的原始起点进行移动;

注意,在使用相对定位时,无论是否进行移动,元素仍然占据原来的空间。因此,移动元素会导致它覆盖其它框。

#box_relative {

position: relative

left: 30px

top: 20px

}

注意:position:absolute,float会隐式地改变display的类型(display:none除外)。即是当元素设置position:absolute、float:left、float:right中任意一个时,都会让元素以display:inline-block的方式显示(特点是:可以设置长宽,默认宽度不占满父元素)。这时,即使故意设置display:inlinedisplay:block都是无效的。

但是float在IE6下的双边距bug就是用display:inline来解决的。

position:relative不会隐式改变display的类型。