为了账号安全,请及时绑定邮箱和手机立即绑定

关于绝对定位排列的问题

<!DOCTYPE HTML>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<title>absolute样式</title>

<style type="text/css">

#ab{

    position:absolute;

}

#abc{

position:absolute;

left:20px;

}

#abcd{

position:absolute;

left:100px;

}

</style>

</head>


<body>

<div id="ab">son</div>

<div id="abc">father</div>

<div id="abcd">grandfather</div>

</body>

</html>

为什么这三个<div>显示在同一行上?

正在回答

2 回答

我们先来看一下绝对定位的含义:

层模型--绝对定位

如果想为元素设置层模型中的绝对定位,需要设置position:absolute(表示绝对定位),这条语句的作用将元素从文档流中拖出来,然后使用left、right、top、bottom属性相对于其最接近的一个具有定位属性的父包含块进行绝对定位。如果不存在这样的包含块,则相对于body元素,即相对于浏览器窗口。

你设置这三个div没有设定一个具有定位属性的父元素,所以,他们就默认的是body元素,即浏览器窗口。

你设置了如下的css样式

#ab{

    position:absolute;

}

#abc{

position:absolute;

left:20px;

}

#abcd{

position:absolute;

left:100px;

}

那么显示的结果就是三个元素都会在一行,原因很简单,绝对定位的元素的位置相对于最近的已定位祖先元素,如果元素没有已定位的祖先元素,那么它的位置相对于最初的包含块。就是说abc这个div会向右移动20px abcd会向右移动100px,但是同时绝对定位使元素的位置与文档流无关,因此不占据空间,所以三个div还是会显示在同一行。

0 回复 有任何疑惑可以回复我~
#1

_Jack_Han_

请问什么是文档流?什么是不占据空间?
2016-04-07 回复 有任何疑惑可以回复我~
#2

qq_徵羽kid 回复 _Jack_Han_

文档流是文档中可显示对象在排列时所占用的位置。文档流简述将窗体自上而下分成一行行, 并在每行中按从左至右的顺序排放元素,即为文档流。不占据空间就是它脱离了原来的空间位置,哎呀,这个我也不是很理解诶。
2016-04-08 回复 有任何疑惑可以回复我~
#3

qq_一生之久_0 提问者

非常感谢!
2016-04-08 回复 有任何疑惑可以回复我~
#4

_Jack_Han_ 回复 qq_徵羽kid

谢谢!
2016-04-08 回复 有任何疑惑可以回复我~
#5

qq_徵羽kid 回复 _Jack_Han_

嘿嘿,互相学习,大家一起加油,共同进步。
2016-04-08 回复 有任何疑惑可以回复我~
#6

qq_徵羽kid 回复 qq_一生之久_0 提问者

;-),互相学习,一起加油,共同进步啦。
2016-04-08 回复 有任何疑惑可以回复我~
查看3条回复

相对定位:设置为相对定位的元素框会偏移某个距离。元素仍然保持其未定位前的形状,它原本所占的空间仍保留。

 .relative{ position: relative;  background:purple;  width:50px;  height: 50px;  left: 80px; } 

这个框会出现在跟原来的位置向右80px的地方,原来的位置为空,

如果position: relative改成position: absolute,

则这个框的原来空间会被下面的框所覆盖。

经对定位:绝对定位使元素的位置与文档流无关,因此不占据空间。这一点与相对定位不同,相对定位实际上被看作普通流定位模型的一部分,因为元素的位置相对于它在普通流中的位置。

.box{  width:300px;  height: 300px;  margin: 0 auto;  border: 1px solid orange;  position: relative; } 

.relative{  position:absolute;  background:purple;  width:50px;  height: 50px;  left: 80px;}

box是relative的父元素,标识为relative 的框会出现在向右 80px的地方,

但是如果父元素box没有定位属性,它则会相对body进行定位,位置会大变,会脱离box框。


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
初识HTML(5)+CSS(3)-升级版
  • 参与学习       1225792    人
  • 解答问题       18234    个

HTML(5)+CSS(3)基础教程8小时带领大家步步深入学习标签用法和意义

进入课程

关于绝对定位排列的问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信