float:left
的父级中float:right
和position:relative
之间的区别是什么?在我的测试中,两者都会导致div
浮动在其父级的左上角,覆盖图像(除非我使用div
手动定位right: 0px
)。
我可以看到与position:absolute
的区别。 float:left
需要将div
覆盖在图片上,float:right
我可以省略它并仍然获得叠加效果。
有谁能告诉我这里发生了什么?
我的问题在此jsFiddle中说明。
HTML:
<div class="parent">
<div class="tag">Featured</div>
<img src="http://www.placehold.it/200x200">
</div>
CSS:
.parent {
position:relative;
width: 200px;
}
.tag {
float: right;
position: absolute; /* can omit when using float:right */
/* right: 0px; */ /* uncomment to right-align child */
}
修改
我对position:absolute
和float
的陈述有误。不知怎的,当我和jsFiddle一起玩时,我得到了印象,对不起这种困惑。谢谢你的所有答案。
答案 0 :(得分:4)
您无法在已设置float
的元素上使用position: absolute;
。只需使用left: 0;
或right: 0;
将其与position: relative;
的父级对齐。
此外,position: relative
不会触及孩子的浮动行为。只有position: absolute
才能禁用浮动功能。这就是你的float: right
也位于左上方的原因。使用position: absolute
,您需要明确说明元素的位置。浮动不适合这个角色,因此没有效果。
答案 1 :(得分:2)
绝对定位使该元素脱离正常流量。因此,当您尝试使用float时,它没有任何效果,因为它无法在您的.container中流动到“浮动”。你告诉它忽略绝对定位的其余元素。通过绝对定位,您必须说明您希望它驻留在父级中的位置。所以@Francodi解决方案是正确的。只是进一步解释。
答案 2 :(得分:0)
Float既不影响position:absolute
的元素也不影响父子关系。它只涉及生活在同一DOM级别的元素。 float:left
将让元素浮动在左边,反之亦然。应用于元素的clear: both
会阻止浮动:
Imho你最好在大多数时候使用display:inline-block
。