ป้ายกำกับและทางเลือกข้อความ

เพื่อให้โปรแกรมอ่านหน้าจอแสดง UI ที่พูดแก่ผู้ใช้ องค์ประกอบที่มีความหมาย ต้องมีป้ายกำกับหรือข้อความแทนที่ที่เหมาะสม ป้ายกำกับหรือข้อความ ทางเลือกจะให้ชื่อที่เข้าถึงได้แก่องค์ประกอบ ซึ่งเป็นหนึ่งในพร็อพเพอร์ตี้หลัก ในการแสดงความหมายขององค์ประกอบในโครงสร้างการช่วยเหลือพิเศษ

เมื่อรวมชื่อขององค์ประกอบกับบทบาทขององค์ประกอบ จะทำให้ผู้ใช้ทราบบริบทเพื่อทำความเข้าใจประเภทขององค์ประกอบที่โต้ตอบด้วยและวิธีแสดงองค์ประกอบในหน้าเว็บ หากไม่มีชื่อ โปรแกรมอ่านหน้าจอจะอ่านเฉพาะบทบาทขององค์ประกอบ ลองนึกภาพการพยายามไปยังส่วนต่างๆ ของหน้าเว็บและได้ยินคำว่า "ปุ่ม" "ช่องทำเครื่องหมาย" "รูปภาพ" โดยไม่มีบริบทเพิ่มเติม ด้วยเหตุนี้ การติดป้ายกำกับและข้อความแทนจึงมีความสำคัญอย่างยิ่งต่อประสบการณ์การใช้งานที่ดีและเข้าถึงได้

ตรวจสอบชื่อขององค์ประกอบ

คุณตรวจสอบชื่อที่เข้าถึงได้ขององค์ประกอบได้ในเครื่องมือสำหรับนักพัฒนาเว็บของ Chrome โดยทำดังนี้

  1. คลิกขวาที่องค์ประกอบ แล้วเลือกตรวจสอบ ซึ่งจะเปิดแผงองค์ประกอบของ DevTools
  2. ในแผงองค์ประกอบ ให้มองหาบานหน้าต่างการช่วยเหลือพิเศษ โดยอาจซ่อนอยู่ หลังสัญลักษณ์ »
  3. ในเมนูแบบเลื่อนลงคุณสมบัติที่คำนวณแล้ว ให้มองหาคุณสมบัติชื่อ
แผงการช่วยเหลือพิเศษของเครื่องมือสำหรับนักพัฒนาเว็บที่แสดงชื่อที่คำนวณแล้วสำหรับปุ่ม

ไม่ว่าคุณจะดู img ที่มีข้อความ alt หรือ input ที่มี label สถานการณ์ทั้งหมดนี้จะให้ผลลัพธ์เดียวกัน นั่นคือการตั้งชื่อที่เข้าถึงได้ให้กับองค์ประกอบ

ตรวจสอบชื่อที่ขาดไป

คุณเพิ่มชื่อที่เข้าถึงได้ให้กับองค์ประกอบได้หลายวิธี โดยขึ้นอยู่กับประเภทขององค์ประกอบ ตารางต่อไปนี้แสดงประเภทองค์ประกอบที่พบบ่อยที่สุด ซึ่งต้องมีชื่อที่เข้าถึงได้และลิงก์ไปยังคำอธิบายวิธีเพิ่ม

ติดป้ายกำกับเอกสารและเฟรม

ทุกหน้าควรมีองค์ประกอบ title ที่อธิบายสั้นๆ ว่าหน้าเว็บนั้นๆ เกี่ยวกับอะไร องค์ประกอบ title จะกำหนดชื่อที่เข้าถึงได้ของหน้าเว็บ เมื่อโปรแกรมอ่านหน้าจอเข้าสู่หน้าเว็บนี้ ข้อความนี้จะเป็นข้อความแรกที่ระบบอ่านออกเสียง

ตัวอย่างเช่น หน้าด้านล่างมีชื่อว่า "สูตรทำเมเปิลบาร์อบด่วนของแมรี่"

<!doctype html>
  <html lang="en">
    <head>
      <title>Mary's Maple Bar Fast-Baking Recipe</title>
    </head>
  <body>
      </body>
</html>

ในทำนองเดียวกัน องค์ประกอบ frame หรือ iframe ใดๆ ควรมีแอตทริบิวต์ title ดังนี้

<iframe title="An interactive map of San Francisco" src="…"></iframe>

แม้ว่าเนื้อหาของ iframe อาจมีองค์ประกอบ title ภายในของตัวเอง แต่โปรแกรมอ่านหน้าจอมักจะหยุดที่ขอบเขตเฟรมและประกาศบทบาทขององค์ประกอบ ซึ่งก็คือ "เฟรม" รวมถึงชื่อที่เข้าถึงได้ซึ่งระบุโดยแอตทริบิวต์ title ซึ่งจะ ช่วยให้ผู้ใช้ตัดสินใจได้ว่าจะเข้าสู่เฟรมหรือข้ามเฟรม

ใส่ข้อความแทนสำหรับรูปภาพและออบเจ็กต์

img ควรมาพร้อมกับแอตทริบิวต์ alt เสมอเพื่อให้รูปภาพมีชื่อที่เข้าถึงได้ หากโหลดรูปภาพไม่สำเร็จ ระบบจะใช้ข้อความ alt เป็นตัวยึดตำแหน่งเพื่อให้ผู้ใช้ทราบว่ารูปภาพพยายามสื่อถึงอะไร

การเขียนaltข้อความที่ดีเป็นศิลปะอย่างหนึ่ง แต่ก็มีหลักเกณฑ์ 2 ข้อที่คุณทำตามได้

  1. พิจารณาว่ารูปภาพมีเนื้อหาที่อ่านได้ยากจากข้อความโดยรอบหรือไม่
  2. หากเป็นเช่นนั้น ให้สื่อเนื้อหาอย่างกระชับที่สุด

หากรูปภาพทำหน้าที่เป็นของตกแต่งและไม่มีเนื้อหาที่เป็นประโยชน์ คุณสามารถระบุแอตทริบิวต์ alt="" ที่ว่างเปล่าเพื่อนำรูปภาพออกจาก โครงสร้างการช่วยเหลือพิเศษได้

รูปภาพที่อยู่ในลิงก์ควรใช้แอตทริบิวต์ alt ของ img เพื่ออธิบายว่าผู้ใช้จะไปที่ใดหากคลิกลิงก์

<a href="https://en.wikipedia.org/wiki/Google">
  <img alt="Google's wikipedia page" src="google-logo.jpg">
</a>

ในทำนองเดียวกัน หากใช้องค์ประกอบ <input type="image"> เพื่อสร้างปุ่มรูปภาพ ควรมีข้อความ alt ที่อธิบายการทำงานที่จะเกิดขึ้นเมื่อ ผู้ใช้คลิกปุ่ม

<form>
  <label>
    Username:
    <input type="text">
  </label>
  <input type="image" alt="Sign in" src="./sign-in-button.png">
</form>

ออบเจ็กต์แบบฝัง

องค์ประกอบ <object> ซึ่งโดยปกติจะใช้สำหรับการฝัง เช่น Flash, PDF หรือ ActiveX ควรมีข้อความแทนด้วย ข้อความนี้จะแสดงขึ้นหากองค์ประกอบแสดงผลไม่สำเร็จ เช่นเดียวกับรูปภาพ ข้อความแทนจะอยู่ภายในองค์ประกอบ object เป็นข้อความปกติ เช่น "รายงานประจำปี" ด้านล่าง

<object type="application/pdf" data="/report.pdf">
Annual report.
</object>

ปุ่มและลิงก์มักเป็นสิ่งสำคัญต่อประสบการณ์การใช้งานเว็บไซต์ และทั้ง 2 อย่างนี้ควรมีชื่อสำหรับการช่วยเหลือพิเศษที่ดี

ปุ่ม

องค์ประกอบ button จะพยายามคำนวณชื่อที่เข้าถึงได้โดยใช้เนื้อหาข้อความเสมอ สำหรับปุ่มที่ไม่ได้เป็นส่วนหนึ่งของ form การเขียนข้อความที่สื่อถึงการดำเนินการอย่างชัดเจนอาจเป็นสิ่งเดียวที่คุณต้องทำเพื่อสร้างชื่อที่เข้าถึงได้ที่ดี

<button>Book Room</button>

แบบฟอร์มบนอุปกรณ์เคลื่อนที่ที่มีปุ่ม &quot;จองห้อง&quot;

ข้อยกเว้นที่พบบ่อยสำหรับกฎนี้คือปุ่มไอคอน ปุ่มไอคอนอาจใช้ รูปภาพหรือแบบอักษรไอคอนเพื่อระบุเนื้อหาข้อความสำหรับปุ่ม ตัวอย่างเช่น ปุ่มที่ใช้ในตัวแก้ไข WYSIWYG (What You See Is What You Get) เพื่อจัดรูปแบบ ข้อความมักจะเป็นเพียงสัญลักษณ์กราฟิก

ปุ่มไอคอนจัดแนวซ้าย

เมื่อทำงานกับปุ่มไอคอน การระบุชื่อสำหรับการช่วยเหลือพิเศษอย่างชัดเจนโดยใช้แอตทริบิวต์ aria-label อาจเป็นประโยชน์ aria-label จะลบล้างเนื้อหาข้อความใดๆ ภายในปุ่ม ทำให้คุณอธิบายการดำเนินการแก่ ทุกคนที่ใช้โปรแกรมอ่านหน้าจอได้อย่างชัดเจน

<button aria-label="Left align"></button>

ลิงก์จะรับชื่อสำหรับการช่วยเหลือพิเศษจากเนื้อหาข้อความเป็นหลักเช่นเดียวกับปุ่ม เคล็ดลับที่ดีในการสร้างลิงก์คือการใส่ข้อความที่มีความหมายมากที่สุด ลงในลิงก์เอง แทนที่จะใช้คำเสริม เช่น "ที่นี่" หรือ "อ่าน เพิ่มเติม"

อธิบายไม่เพียงพอ
Check out our guide to web performance <a href="/guide">here</a>.
เนื้อหาที่เป็นประโยชน์
Check out <a href="/guide">our guide to web performance</a>.

ซึ่งจะมีประโยชน์อย่างยิ่งสำหรับโปรแกรมอ่านหน้าจอที่มีแป้นพิมพ์ลัดเพื่อแสดงรายการลิงก์ทั้งหมดในหน้าเว็บ หากลิงก์มีข้อความเสริมที่ซ้ำกัน แป้นพิมพ์ลัดเหล่านี้จะมีประโยชน์น้อยลงมาก

เมนูลิงก์ของ VoiceOver ที่มีคำว่า &quot;ที่นี่&quot;
ตัวอย่าง VoiceOver ซึ่งเป็นโปรแกรมอ่านหน้าจอสำหรับ macOS ที่แสดงเมนู "ไปยังตาม" ลิงก์

องค์ประกอบฟอร์มป้ายกำกับ

การเชื่อมโยงป้ายกำกับกับองค์ประกอบของแบบฟอร์ม เช่น ช่องทำเครื่องหมาย ทำได้ 2 วิธี ไม่ว่าจะเป็นวิธีใดก็ตาม จะทำให้ข้อความป้ายกำกับกลายเป็นเป้าหมายการคลิกสำหรับ ช่องทำเครื่องหมาย ซึ่งจะเป็นประโยชน์สำหรับผู้ใช้เมาส์หรือหน้าจอสัมผัสด้วย หากต้องการเชื่อมโยง ป้ายกำกับกับองค์ประกอบ ให้ทำอย่างใดอย่างหนึ่งต่อไปนี้

  • วางองค์ประกอบอินพุตไว้ภายในองค์ประกอบป้ายกำกับ
<label>
  <input type="checkbox">Receive promotional offers?</input>
</label>
  • หรือใช้แอตทริบิวต์ for ของป้ายกำกับและอ้างอิงถึง id ขององค์ประกอบ
<input id="promo" type="checkbox"></input>
<label for="promo">Receive promotional offers?</label>

เมื่อติดป้ายกำกับช่องทำเครื่องหมายอย่างถูกต้อง โปรแกรมอ่านหน้าจอจะรายงานว่า องค์ประกอบมีบทบาทเป็นช่องทำเครื่องหมาย อยู่ในสถานะที่เลือก และมีชื่อว่า "รับ ข้อเสนอโปรโมชันไหม" ดังตัวอย่าง VoiceOver นี้

เอาต์พุตข้อความของ VoiceOver แสดงข้อความ &quot;รับข้อเสนอโปรโมชันไหม&quot;