องค์ประกอบ label และการเข้าถึง
เชื่อมโยงป้ายกำกับกับ input เพื่อรองรับโปรแกรมอ่านหน้าจอ
องค์ประกอบ label และการเข้าถึง เป็นบทเรียน HTML Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน HTML Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส HTML Academy มีบทเรียนทั้งหมด 4 บทเรียน
เหตุใดป้ายกำกับจึงสำคัญ
องค์ประกอบ <label> เชื่อมโยงคำอธิบายที่เป็นข้อความเข้ากับตัวควบคุมฟอร์ม:
- โปรแกรมอ่านหน้าจอจะประกาศป้ายกำกับเมื่ออินพุตได้รับโฟกัส
- การคลิกป้ายกำกับจะเปิดใช้งานอินพุตที่เชื่อมโยงกัน
- หากไม่มีป้ายกำกับ ผู้ใช้โปรแกรมอ่านหน้าจอจะไม่ทราบว่าช่องข้อมูลมีไว้ทำอะไร
ป้ายกำกับแบบชัดแจ้งด้วย for
แอตทริบิวต์ for เชื่อมโยงป้ายกำกับกับอินพุตผ่าน id:
<label for="email">Email address</label>
<input type="email" id="email" name="email">
<!-- for="email" matches id="email" -->
<!-- Clicking "Email address" moves focus to the input -->
<!-- Required for proper accessibility -->ป้ายกำกับโดยนัย (การครอบอินพุต)
การครอบอินพุตไว้ภายในป้ายกำกับจะสร้างการเชื่อมโยงโดยนัย:
<!-- No for/id needed — input is inside label -->
<label>
Email address
<input type="email" name="email">
</label>
<!-- Works fine but explicit association is more robust
(especially when label and input are far apart in the DOM) -->การแยกป้ายกำกับกับอินพุต
เมื่อป้ายกำกับกับอินพุตไม่สามารถอยู่ติดกันได้ ให้ใช้ aria-labelledby:
<h2 id="section-title">Billing Details</h2>
<input type="text" name="name" aria-labelledby="section-title">
<!-- The heading serves as the accessible label for the input -->ใช้ aria-label เป็นทางเลือก
เมื่อไม่สามารถแสดงป้ายกำกับที่มองเห็นได้ ให้ใช้ aria-label:
<!-- Search form with icon button -->
<form>
<input type="search" name="q" aria-label="Search the site">
<button type="submit" aria-label="Submit search">
<svg><!-- magnifier icon --></svg>
</button>
</form>หนึ่งป้ายกำกับต่อหนึ่งอินพุต
อินพุตแต่ละรายการควรมีป้ายกำกับเพียงหนึ่งรายการ อินพุตหลายรายการควรมีป้ายกำกับแยกกัน:
<!-- BAD: one label for multiple inputs -->
<label>First and last name
<input type="text" name="first">
<input type="text" name="last">
</label>
<!-- GOOD: separate labels -->
<label for="first">First name</label>
<input type="text" id="first" name="first">
<label for="last">Last name</label>
<input type="text" id="last" name="last">การระบุช่องข้อมูลที่จำเป็น
ระบุช่องข้อมูลที่จำเป็นให้เข้าถึงได้:
<!-- Visual + accessible required indicator -->
<label for="email">
Email address
<span aria-hidden="true">*</span> <!-- visual asterisk -->
<span class="sr-only">(required)</span> <!-- screen reader text -->
</label>
<input type="email" id="email" name="email" required>Fieldset และ Legend สำหรับกลุ่ม
จัดกลุ่มอินพุตที่เกี่ยวข้องด้วย <fieldset> และ <legend>:
<fieldset>
<legend>Shipping address</legend>
<label for="addr-street">Street</label>
<input type="text" id="addr-street" name="street" autocomplete="address-line1">
<label for="addr-city">City</label>
<input type="text" id="addr-city" name="city" autocomplete="address-level2">
</fieldset>Fieldset สำหรับกลุ่มปุ่มตัวเลือก
กลุ่มปุ่มตัวเลือกต้องมี fieldset และ legend เสมอ:
<fieldset>
<legend>Preferred contact method</legend>
<label>
<input type="radio" name="contact" value="email"> Email
</label>
<label>
<input type="radio" name="contact" value="phone"> Phone
</label>
<label>
<input type="radio" name="contact" value="text"> Text message
</label>
</fieldset>Placeholder ไม่ใช่ป้ายกำกับ
Placeholder จะหายไปเมื่อผู้ใช้เริ่มพิมพ์ จึงใช้แทนป้ายกำกับไม่ได้:
<!-- BAD: placeholder used as a label -->
<input type="email" placeholder="Email address">
<!-- Screen readers may announce the placeholder, but many skip it -->
<!-- User cannot see the field purpose while typing -->
<!-- GOOD: -->
<label for="email">Email address</label>
<input type="email" id="email" placeholder="you@example.com">ป้ายกำกับที่ซ่อนในเชิงภาพ
หากการออกแบบไม่มีป้ายกำกับที่มองเห็นได้ ให้ซ่อนป้ายกำกับในเชิงภาพ แต่คงไว้สำหรับโปรแกรมอ่านหน้าจอ:
<label for="search" class="sr-only">Search</label>
<input type="search" id="search" placeholder="Search...">
/* sr-only utility class: */
.sr-only {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0,0,0,0);
white-space: nowrap;
border: 0;
}ตรวจสอบความเข้าใจ
จะเชื่อมโยงป้ายกำกับกับอินพุตโดยใช้การเชื่อมโยงแบบชัดแจ้งได้อย่างไร
ทบทวน: การเข้าถึงของ label
สาระสำคัญของป้ายกำกับ:
- อินพุตทุกช่องต้องมีป้ายกำกับเสมอ
<label for="id">คือการเชื่อมโยงแบบชัดแจ้ง- การครอบอินพุตไว้ภายในป้ายกำกับ = การเชื่อมโยงโดยนัย
aria-labelledbyเชื่อมโยงกับองค์ประกอบใดก็ได้ผ่าน idaria-labelใช้สำหรับปุ่มที่มีเฉพาะไอคอนและไม่มีข้อความที่มองเห็นได้<fieldset>+<legend>สำหรับตัวควบคุมที่จัดกลุ่ม
เรียนรู้ HTML ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 40
- บทเรียน
- 159
คำถามที่พบบ่อย
บทเรียน “องค์ประกอบ label และการเข้าถึง” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “องค์ประกอบ label และการเข้าถึง” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส HTML Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส HTML Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “องค์ประกอบ label และการเข้าถึง”
เชื่อมโยงป้ายกำกับกับ input เพื่อรองรับโปรแกรมอ่านหน้าจอ คุณปฏิบัติ HTML Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน HTML Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน HTML Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “องค์ประกอบ label และการเข้าถึง” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน HTML Academy นี้ได้ไหม
ได้ บทเรียน HTML Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- องค์ประกอบ form: action, method และ enctype
- ชนิด input: text, password, email, number และ tel
- องค์ประกอบ label และการเข้าถึง
- องค์ประกอบ button: submit, reset และ button