Position:absolute

html-css018

Position:absolute,第1张

css position属性允许你定位一个元素,通过使用top,left,bottom,right属性,当然你必须先设定position的属性值,以便告诉浏览器依据什么方式进行定位。

因为绝对定位(position:absolute)在实际应用中有着十分重要的地位,特别进行深度探究以便在使用中能更得心应手。

元素设置position:absolute后主要会带来4个影响。

1、2、和4都好理解这里对2进行着重分析。

因为定位可以是realitive、absolute和fixed。故父级元素会出现3中情况。

1.父元素relative(√)。

.parents{width: 200pxheight:200pxposition: relativebackground: #f60} .box{width: 100pxheight:100pxposition: absolutebackground: #06ftop: 50pxleft: 50px

第二个问题top、right、bottom、left定位到最近一个具有定位设置父元素的边缘的距离。这个边缘指的是什么?

因为盒子的margin 、border、padding、及content都会影响盒子的尺寸。在这里对父元素为relative的模型进行依次添加。

1.添加margin:50px 0 0 50px

2.添加border-left: 50px solid #000border-top: 50px solid #000

3添加padding:50px 0 0 50px

第三个问题left除了设置length具体尺寸,%相对于父容器的尺寸,默认会设置成auto,通过浏览器来计算位置。那么具体是怎么计算的呢。父元素为relative的模型进行探究。

1.子元素top: autoleft: auto

2.父元素添加margin-left:50px

3.父元素继续添加border-left:50px solid #000

4.父元素继续添加padding-left:50px

5.父元素继续添加padding-top:50px

position 属性指定了元素的定位类型。

语法,position:static -默认值,没有定位,遵循正常的文档流对象;

position:fixed -元素的位置相对于浏览器窗口是固定位置;

position:relative -相对定位元素的定位是相对其正常位置;

position:absolute --绝对定位的元素的位置相对于最近的已定位父元素,如果元素没有已定位的父元素,那么它的位置相对于<html>;

position:sticky -粘性定位,基于用户的滚动位置来定位。它的行为就像position:relative

而当页面滚动超出目标区域时,它的表现就像position:fixed,它会固定在目标位置。

示例

<style>

.dianqi{

position:fixed;

根据W3C的解释为:position 属性规定元素的定位类型,把元素放置到一个静态的、相对的、绝对的、或固定的位置中。

可能的值

absolute:生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位。元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定。

fixed:生成绝对定位的元素,相对于浏览器窗口进行定位。元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定。

relative:生成相对定位的元素,相对于其正常位置进行定位。

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

inherit:规定应该从父元素继承 position 属性的值。

我们用的最多的absolute和relative,接下来可以通过具体例子来更加直观地体现。

举例

一:绝对定位

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的类型。