首先,替換元件from W3的定義:HTML標籤是替換元素嗎?
代替元件
的元件,其內容是 CSS格式模型,諸如圖像,嵌入的文檔,或小應用程序的範圍之外。例如,HTML IMG元素的內容經常被其「src」屬性指定的圖像替換爲 。替換的元素通常具有固有的尺寸:固有寬度,固有高度,以及內在比率。例如,位圖圖像具有固有的寬度和以絕對單位指定的固有高度(其中顯然可以確定固有比率 )。另一方面, 其他文檔可能沒有任何固有尺寸(例如, 空白HTML文檔)。
如果認爲這些尺寸可能會泄露 敏感信息給第三方,用戶代理可能會認爲替換的元素沒有任何固有的尺寸 尺寸。例如,如果HTML 文檔根據用戶的銀行餘額更改了固有大小,則UA可能希望充當該資源沒有固有 維度。
替換元素的內容未在CSS 渲染模型中考慮。
它似乎沒有關注label
,對吧?
然後,我看到this blog post,這給這一個規則:
不能應用生成的內容替換元素。也就是說,你 不能應用僞元素選擇器:before或:after之後。
但我可以。
所以,我可以假設它不是一個被替代的元素(我缺乏經驗來證明相反)。
因此,根據MDN's doc約line-height
:
案例1 - 在塊級元素,線高度CSS屬性指定的線框的元件內的 最小高度。
案例2 - 在非替換內聯元素上,行高指定 用於計算行盒高度的高度。
案例3 - 與替換內聯元素,如按鈕或其他輸入元素, 行高不起作用。
我建立JSfiddles來說明這些行爲,進行比較的塊元件(div
)和標籤:
- Setting specific
line-height
directly ondiv
andlabel
- 行 - Setting
line-height
on wrapping form, and override it ondiv
andlabel
- 不OK時,兩個元件的行爲不同 - Setting
line-height
on wrapping form,label
displayed as a block, overridingline-height
onlabel
andblock
- 好吧
那麼,label
表現得像一個非替換的元素,但是當涉及覆蓋line-height
時,它沒有。
我不明白,有人對此行爲有任何解釋嗎?畢竟標籤是被替換的元素嗎?
在W3.org,我已經看到了label
是在措詞內容類別,我見過this post,但我沒有找到一個答案,我與它的問題。
測試是在Chrome 33(Mac)下進行的。
問題的關鍵似乎是在'label'元素上設置的'line-height'在某些情況下的行爲與某些期望相反。 @ Quentin的回答很好地解決了這種現象,它對於'標籤'元素來說絕不是唯一的。你會得到相同的行爲,例如用於'span'元素。 –