HTML Academy · บทเรียน

องค์ประกอบ label และการเข้าถึง

เชื่อมโยงป้ายกำกับกับ input เพื่อรองรับโปรแกรมอ่านหน้าจอ

บทเรียน 3 จาก 413 ขั้นตอน

องค์ประกอบ 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 เชื่อมโยงกับองค์ประกอบใดก็ได้ผ่าน id
  • aria-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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. องค์ประกอบ form: action, method และ enctype
  2. ชนิด input: text, password, email, number และ tel
  3. องค์ประกอบ label และการเข้าถึง
  4. องค์ประกอบ button: submit, reset และ button
← กลับไปที่ HTML Academy