2008-10-27 103 views
5

我從來沒有理由將標籤元素放置在圖例元素中(從來沒有真正想過或看過它)。但隨着我正在執行的設計,很容易這樣做。包裝圖例元素中的標籤元素

這裏是我很想做的事:

<fieldset> 
<legend><label for="formInfo">I would like information on</label></legend> 
<select id="formInfo"> 
    <option value="Cats">Cats</option> 
    <option value="Dogs">Dogs</option> 
    <option value="Lolz">Lolz</option> 
</select> 
</fieldset> 

它將按預期工作(點擊標籤集中相應的輸入)在Firefox3的,Safari瀏覽器,Opera和IE6/7,並通過了驗證,但我只是想知道是否有任何已知的原因(可訪問性?語義?瀏覽器問題)爲什麼不應該這樣做

回答

11

您的</fieldset>在哪裏?

從語義上講,legend describes a fieldset,就像label描述的是單個字段。

字段集應該用於將語義相關的字段組合在一起(例如,「地址」字段集可能具有街道,城市和國家的輸入字段)。

假設您在字段集中有多個字段,那麼執行您的建議並不會在語義上有意義 - 您需要創建描述字段集的單獨的圖例文本,然後爲每個字段創建一個標籤。

如果您只有一個字段,則根本不需要字段集或圖例。

因此,基本上,你不應該做你正在做的事情。

如果你要做的是有額外的元素來附加CSS規則或Javascript事件,你最好使用像divspan這樣的通用元素,它不會混淆文本到語音和其他非視覺用戶代理。

即,在可訪問性/語義(它意味着什麼)與誤用語義元素(即使只是略微,如在這種情況下)一樣,將divspan置於有效中性,這可能具有誤導性。想象一下,在文本到語音瀏覽器中,甚至可以使用最佳格局佈局:文本被朗讀兩次,一次作爲傳說,一次作爲標籤 - 爲什麼有人需要「我想要信息」大聲朗讀兩次給他們?特別是因爲它只在select控件的選擇範圍內有意義。

+0

已投票。 RE:最後一段 - ...並且如果字段集中還有其他字段,那麼圖例也將針對這些字段進行公佈,這可能是不希望的。 – 2008-10-27 09:21:48

0

好吧,標籤元素本身似乎很好 - 它是「formInfo」元素的描述,所以那不用擔心。然而,從語義上講,關於legend元素的說法是什麼?它應該是整個字段集的標題....