HTML 欄位說明 label:for 與巢狀寫法
<label> 可以用來做 表單 元素的說明,且可加強使用體驗。就規格而言它不是必要的元素,但為了無障礙與操作體驗,每個表單欄位都建議配上一個 label。寫法有兩種:for 對應欄位的 id,或直接把欄位包在裡面。
屬性
for
將此屬性的值設定為某表單元素的 id 值,可以擴大點擊區域。也就是說,點擊 <label> 的說明區域,等同於點擊表單元素。
若不想使用 name、id 相互配合,亦可使用標籤巢狀包覆的方式來達成此效果。
兩種寫法
html
<!-- 用 for 對應欄位的 id -->
<label for="account">帳號</label>
<input type="text" id="account" name="account">
<!-- 直接包覆,不必給 id -->
<label>
帳號
<input type="text" name="account">
</label>for 對應的是欄位的 id,不是 name。用 for 時版面配置比較自由,是較通用的做法。
小提醒
placeholder 不能取代 <label>。使用者開始輸入後提示就消失了,螢幕閱讀器對它的支援也不一致。
常見問題
label 的 for 要對應欄位的什麼?
對應欄位的 id,不是 name。兩者一致時,點擊說明文字就等同點擊該欄位,核取方塊與單選按鈕特別受用。
for 和巢狀包覆該用哪一種?
兩種都有效。用 for 時版面配置比較自由,是較通用的做法;巢狀包覆不必給 id,適合結構單純的欄位。同時使用時,for 要指向被包住的那個欄位。
沒有 label 會怎樣?
螢幕閱讀器讀到那格時只會說是一個輸入框,卻說不出要填什麼。這是無障礙檢測中最常見的錯誤之一,表單欄位請一律配上 <label>。