2011-05-24 174 views
3

我有以下的CSS:浮標和水平的利潤率

label{ 
    float:left; 
    margin-left:24px; 
} 

button{ 
    margin-left:24px; 
} 

這個HTML:

<label> 
    <input> 
</label> 
<button> 

,我希望該按鈕是在標籤的24個像素的距離發現,然而,直到我將按鈕向左移動時,才發生這種情況。我可以參考的CSS規範的哪部分理解爲什麼會發生這種情況?

(請,對不起,我的英語。)

回答

0

對不起,我以前的答案,我希望被刪除。

邊距很棘手。在這種情況下,邊距不計入浮點數:如果浮點數不在那裏,則從元素開始的位置計算邊距。可能的話,您可以將浮動限制權應用於浮動浮動,或者如果您知道浮動浮動寬度,請將其餘量加上您想要將其分開的值。

+0

「count against」是什麼意思? – Blender 2011-05-25 00:09:12

+0

接下來我會說,它們是從元素開始的地方計算的,如果浮動不在那裏。所以按鈕的邊距與浮點開始的位置相同,並且由於浮點大於浮點,浮點後沒有任何浮點數。浮動的效果是將按鈕向右推,但如果浮動不在那裏,則將按鈕的邊緣留在原來的位置。好像不存在。 – entonio 2011-05-25 00:20:25

1

剛纔看了W3C documentation for float

這裏有支配 花車行爲的精確的規則:

  1. 左浮動框的左外邊緣可能不是其左邊的 左邊3210包含塊。類似規則 適用於右浮動元素。
  2. 如果當前框是左浮置,並且有由 元件較早源 文檔中生成的任何 向左浮動框,然後對每個這樣的較早 盒,無論是 當前框的左外邊緣必須在 之前的右邊 框的右邊緣,或者其頂部必須低於前面框的底部 。類似的 規則適用於右浮動框。
  3. 左浮動框的右外邊緣可能與其右邊任何 右浮動框的左外邊緣的右邊 不相同。 類似規則適用於 右浮動元素。
  4. 浮動箱的外頂不得高於其包含塊的頂部 。當浮動 發生在兩個摺疊邊界之間時,浮動的位置好像它有 ,否則爲空的匿名塊 親參與流動。這種父母的位置 根據保證金 摺疊部分中的規則被定義爲 。
  5. 浮動框的外部頂部可能不會高於源 文檔中之前的元素生成的任何塊或浮動框的外部頂部 。
  6. 元素浮動框的外部頂部可能不會高於 任何包含 框的任何線條框的頂部,此框由 之前的元素在源文檔中生成。
  7. 一個左浮動框左側的另一個浮動框 可能沒有右邊的外邊框到 它的包含塊的右邊的 右邊緣。 (鬆散地:左邊的浮動可能 不會在右邊緣伸出, 除非它已經儘可能遠離 左邊)。類似規則 適用於右浮動元素。
  8. 浮動箱子必須儘可能高。
  9. 左浮箱必須儘可能地放在儘可能遠的地方, 右浮箱儘可能地靠近右邊 。較高的位置是 優先於一個進一步到 的左/右。

這是因爲內聯元素不能具有margin屬性。 <label>是一個內聯元素,通過將它浮動,您可以使它看起來像是一個inline-block,允許您爲其添加margin

這很奇怪。 嘗試使用display: inline-block;而不是float: left;,看看會發生什麼。