浮标和水平的利润率
问题描述:
我有以下的CSS:浮标和水平的利润率
label{
float:left;
margin-left:24px;
}
button{
margin-left:24px;
}
这个HTML:
<label>
<input>
</label>
<button>
,我希望该按钮是在标签的24个像素的距离发现,然而,直到我将按钮向左移动时,才发生这种情况。我可以参考的CSS规范的哪部分理解为什么会发生这种情况?
(请,对不起,我的英语。)
答
对不起,我以前的答案,我希望被删除。
边距很棘手。在这种情况下,边距不计入浮点数:如果浮点数不在那里,则从元素开始的位置计算边距。可能的话,您可以将浮动限制权应用于浮动浮动,或者如果您知道浮动浮动宽度,请将其余量加上您想要将其分开的值。
答
刚才看了W3C documentation for float
:
这里有支配 花车行为的精确的规则:
- 左浮动框的左外边缘可能不是其左边的 左边3210包含块。类似规则 适用于右浮动元素。
- 如果当前框是左浮置,并且有由 元件较早源 文档中生成的任何 向左浮动框,然后对每个这样的较早 盒,无论是 当前框的左外边缘必须在 之前的右边 框的右边缘,或者其顶部必须低于前面框的底部 。类似的 规则适用于右浮动框。
- 左浮动框的右外边缘可能与其右边任何 右浮动框的左外边缘的右边 不相同。 类似规则适用于 右浮动元素。
- 浮动箱的外顶不得高于其包含块的顶部 。当浮动 发生在两个折叠边界之间时,浮动的位置好像它有 ,否则为空的匿名块 亲参与流动。这种父母的位置 根据保证金 折叠部分中的规则被定义为 。
- 浮动框的外部顶部可能不会高于源 文档中之前的元素生成的任何块或浮动框的外部顶部 。
- 元素浮动框的外部顶部可能不会高于 任何包含 框的任何线条框的顶部,此框由 之前的元素在源文档中生成。
- 一个左浮动框左侧的另一个浮动框 可能没有右边的外边框到 它的包含块的右边的 右边缘。 (松散地:左边的浮动可能 不会在右边缘伸出, 除非它已经尽可能远离 左边)。类似规则 适用于右浮动元素。
- 浮动箱子必须尽可能高。
- 左浮箱必须尽可能地放在尽可能远的地方, 右浮箱尽可能地靠近右边 。较高的位置是 优先于一个进一步到 的左/右。
这是因为内联元素不能具有margin
属性。 <label>
是一个内联元素,通过将它浮动,您可以使它看起来像是一个inline-block
,允许您为其添加margin
。
这很奇怪。 尝试使用display: inline-block;
而不是float: left;
,看看会发生什么。
“count against”是什么意思? – Blender 2011-05-25 00:09:12
接下来我会说,它们是从元素开始的地方计算的,如果浮动不在那里。所以按钮的边距与浮点开始的位置相同,并且由于浮点大于浮点,浮点后没有任何浮点数。浮动的效果是将按钮向右推,但如果浮动不在那里,则将按钮的边缘留在原来的位置。好像不存在。 – entonio 2011-05-25 00:20:25