我有两个div,它们有两个主要属性:显示块和宽度
#block1 {
display:block;
width:20%;
background-color:red;
height:100px;
}
#block2 {
display:block;
width:70%;
background-color:yellow;
height:100px;
}
<div id="block1">
</div>
<div id="block2">
</div>
当我添加float属性时,它使两个div的行为类似于一个内联块:
一个二个一个一个
为什么添加属性float:left会使div的行为类似于内联块
4条答案
按热度按时间kgsdhlau1#
使用
float
可以将元素从正常文档流中取出,其他inline
元素可以将它们 Package 起来;它不会使它们表现得像inline-block
元素。如果你想用其他方法来达到同样的效果,请看下面的例子。
下面是一个示例,在父元素上使用
display: flex
使子元素位于同一行。下面是一个例子,在两个元素上使用
display: inline-block
,使它们保持在同一行上,并且在父元素上使用font-size: 0
,以确保它们之间的间隔消失。一个二个一个一个
下面是一个示例,在两个元素上使用
display: table-cell
,使它们位于同一行,而在父元素上使用display: table
。2ul0zpep2#
你说
float
的行为 * 像 *inline-block
是正确的,但实际上它只是看起来像是以同样的方式行为,为了显示不同之处......让我们假设你在float:left
下面有一些文本:那么div将出现在左侧,剩余的可用水平空间将被文本填充。带浮子:
但是如果你
display:inline-block
你会得到不同的结果:一个二个一个一个
r1wp621o3#
在div的css中添加属性
left
并没有使它们成为inline-block
,而是使它们在DOM中浮动。x8goxv8g4#
浮动的元素将从文档的正常流中删除(但不完全像绝对定位的元素)。
这就是为什么下一个元素移动到顶行并位于浮动元素旁边的原因。
如果希望下一个元素保留在最后一行,则需要使用
clear
属性。