服务时间:8:30-18:00

首页 >web前端网

css中什么是绝对定位

发布时间:2022-12-08 23:21 字数:1200字 阅读:63

css中什么是绝对定位?绝对定位(position: absolute)的元素的位置是相对于“最近的除static外已定位祖先元素”定位的,如果元素没有已定位的祖先元素,那么它的位置是相对于最外层的元素(HTML元素)定位的。

【例1】把相对定位改为绝对定位,观察浏览器中的页面发生了哪些变化。代码如下。


.box2{
        width:100px;
        height:100px;
        background-color:#f5eab2;
        position:absolute;
        left:100px;
        top:100px;
}


如图1所示,将box2从相对定位改为绝对定位之后,box2和box3的位置都发生了变化。

绝对定位

图1 绝对定位

变化的原因:

(1)给元素设置绝对定位后,元素会脱离文档流。box2脱离了文档流,box3在文档中的布局就像box2不存在一样,所以出现上移;

(2)box2移动时的参考系发生变化。给元素设置绝对定位时,box2并没有已定位的父级元素,所以它是相对于最外层的HTML元素定位的。

box2的位置有所偏移,是因为没有清除body的默认margin值导致的。清除body的margin值,或给body加上相对定位使其成为box2的定位父级元素,这两种方法都可以消除偏移的问题,得到如图2所示的效果。

浏览器显示效果

图2 浏览器显示效果

方法一:清除body元素的默认样式。CSS代码如下。


html,body{
   margin:0;
   padding:0;
}


方法二:给body元素设置相对定位,使其成为box2的定位父级。CSS代码如下。


body{
   position:relative;
}


要使用绝对定位完成如图0示的布局,需要相对于定位父级移动box2和box3两个元素的位置。在绝对定位中,位移与元素原先的位置完全没有关系,只与参考父级的位置有关系。代码如下。


body{
   position:relative;
}
.box2{
   width:100px;
   height:100px;
   background-color:#f5eab2;
   position:absolute;
   left:100px;
   top:200px;
}
.box3{
   width:100px;
   height:100px;
   background-color:#b7d5e0;
   position:absolute;
   left:0;
   top:200px;
}


浏览器显示效果如图3所示。绝对定位的特点:

浏览器显示效果

图3 浏览器显示效果

(1)没有设置偏移量时,元素的位置不发生改变;

(2)使元素完全脱离文档流;

(3)内联元素支持宽高;

(4)块元素默认由内容撑开宽度;

(5)有定位父级,相对于离自己最近的祖先元素偏移。没有定位父级,相对于document(<html>元素)发生偏移;

(6)相对定位一般都是配合绝对定位使用;

(7)提升层级。