一起使用position: absolute
和float:left
看起来有点令人困惑甚至荒谬,因为position: absolute
不会影响兄弟元素的位置,而float:left
会影响兄弟的位置兄弟浮动元素。
但是,在CSS中允许一起使用它们,那么预期的行为是什么?我不太确定使用它们时会发生什么,因为它没有在MDN文档(https://developer.mozilla.org/en-US/docs/Web/CSS/float)中描述。
有没有人对此有任何想法?谢谢!
答案 0 :(得分:0)
将float:left;
添加到absolute
定位元素显然不会添加元素的任何行为更改。大多数display
属性的情况也是如此。例如,添加display:inline;
不会导致其尺寸丢失。
它也没有显示与相邻浮动元素的任何连接。
.box{
border: 1px solid red;
float: left;
height: 100px;
width: 100px;
}
.box1{
border: 1px solid green;
height: 100px;
width: 100px;
position: absolute;
display: table;
}
<div class="box"></div>
<div class="box1"></div>
但是当移除相邻元素的float
时,绝对定位的元素位于其下方。
.box{
border: 1px solid red;
height: 100px;
width: 100px;
}
.box1{
border: 1px solid green;
height: 100px;
width: 100px;
position: absolute;
display: table;
}
<div class="box"></div>
<div class="box1"></div>
答案 1 :(得分:0)
CSS2规范(https://www.w3.org/TR/CSS2/visuren.html#dis-pos-flo)中讨论了它:
否则,如果 &#39;位置&#39;有绝对的价值&#39;或者&#39;固定&#39;,这个盒子绝对是 定位,&#39;浮动&#39;的计算值是&#39;无&#39;,显示是 根据下表设置。盒子的位置将是 由顶部&#39;,&#39;右边&#39;底部&#39;决定?并且&#39;离开&#39;属性和 包含块的框。
所以结论是当float
的值为none
时,position
被强制设置为absolute
。