ไทย

คู่มือฉบับสมบูรณ์ในการสร้าง Tooltip ที่เข้าถึงได้โดยใช้สถานะ hover และ focus เพื่อให้ผู้ใช้ทุกคน รวมถึงผู้พิการ สามารถใช้งานได้

การสร้าง Tooltip: ข้อมูลที่เข้าถึงได้ผ่าน Hover และ Focus

Tooltip คือข้อความช่วยเหลือขนาดเล็กตามบริบทที่ปรากฏขึ้นเมื่อผู้ใช้นำเมาส์ไปวางเหนือ (hover) หรือโฟกัส (focus) ที่องค์ประกอบต่างๆ ซึ่งสามารถให้ข้อมูลเพิ่มเติม ชี้แจงวัตถุประสงค์ขององค์ประกอบ หรือเสนอคำแนะนำเกี่ยวกับวิธีใช้ฟีเจอร์ได้ อย่างไรก็ตาม Tooltip อาจกลายเป็นฝันร้ายด้านการเข้าถึงได้ (accessibility) หากไม่ได้สร้างขึ้นอย่างถูกต้อง คู่มือนี้จะสรุปแนวทางปฏิบัติที่ดีที่สุดในการสร้าง Tooltip ที่ทุกคนสามารถใช้งานได้ รวมถึงผู้ใช้ที่มีความพิการด้วย

ทำไมการเข้าถึงได้จึงสำคัญสำหรับ Tooltip

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

การปฏิบัติตามแนวทางปฏิบัติที่ดีที่สุดด้านการเข้าถึงได้ จะช่วยให้แน่ใจว่า Tooltip ช่วยเสริมสร้างประสบการณ์ผู้ใช้สำหรับทุกคน แทนที่จะเป็นอุปสรรค

หลักการสำคัญสำหรับ Tooltip ที่เข้าถึงได้

หลักการต่อไปนี้มีความสำคัญอย่างยิ่งในการสร้าง Tooltip ที่เข้าถึงได้:

  1. จัดเตรียมช่องทางการเข้าถึงทางเลือก: ตรวจสอบให้แน่ใจว่า Tooltip สามารถเข้าถึงได้ทั้งผ่านการใช้เมาส์วางเหนือและโฟกัสด้วยคีย์บอร์ด
  2. ใช้คุณสมบัติ ARIA: ใช้คุณสมบัติ ARIA (Accessible Rich Internet Applications) เพื่อระบุและอธิบาย Tooltip ให้กับเทคโนโลยีสิ่งอำนวยความสะดวกอย่างถูกต้อง
  3. จัดการโฟกัส: ควบคุมตำแหน่งของโฟกัสเมื่อ Tooltip แสดงและซ่อน
  4. ตรวจสอบความเปรียบต่างของสีที่เพียงพอ: จัดให้มีความเปรียบต่างของสีระหว่างข้อความและพื้นหลังของ Tooltip ที่เพียงพอ
  5. ให้เวลาที่เพียงพอ: ให้เวลาผู้ใช้เพียงพอในการอ่านเนื้อหาของ Tooltip
  6. ทำให้สามารถปิดได้: จัดเตรียมวิธีที่ชัดเจนในการปิด Tooltip
  7. หลีกเลี่ยงการใช้งานมากเกินไป: ใช้ Tooltip อย่างประหยัดและเฉพาะเมื่อจำเป็นเท่านั้น

เทคนิคการนำไปใช้งาน

1. การใช้ Hover และ Focus

ส่วนที่สำคัญที่สุดของ Tooltip ที่เข้าถึงได้คือการทำให้แน่ใจว่าผู้ใช้ทั้งเมาส์และคีย์บอร์ดสามารถเข้าถึงได้ ซึ่งหมายความว่า Tooltip ควรปรากฏทั้งเมื่อใช้เมาส์วางเหนือและเมื่อองค์ประกอบได้รับโฟกัส

HTML:

<a href="#" aria-describedby="tooltip-example">Example Link</a>
<div id="tooltip-example" role="tooltip" style="display: none;">This is an example tooltip.</div>

CSS:

a:hover + div[role="tooltip"],
a:focus + div[role="tooltip"] {
  display: block;
  position: absolute;
  background-color: #f0f0f0;
  border: 1px solid #ccc;
  padding: 5px;
  z-index: 1000; /* Ensure the tooltip is on top */
}

คำอธิบาย:

JavaScript (การควบคุมขั้นสูง - ตัวเลือกเสริม):

ในขณะที่ CSS สามารถจัดการการแสดง/ซ่อนแบบง่ายๆ ได้ แต่ JavaScript ช่วยให้ควบคุมได้มีประสิทธิภาพมากขึ้น โดยเฉพาะอย่างยิ่งเมื่อ Tooltip ถูกสร้างขึ้นแบบไดนามิกหรือต้องการพฤติกรรมที่ซับซ้อนกว่า

const link = document.querySelector('a[aria-describedby="tooltip-example"]');
const tooltip = document.getElementById('tooltip-example');

link.addEventListener('focus', () => {
  tooltip.style.display = 'block';
});

link.addEventListener('blur', () => {
  tooltip.style.display = 'none';
});

link.addEventListener('mouseover', () => {
  tooltip.style.display = 'block';
});

link.addEventListener('mouseout', () => {
  tooltip.style.display = 'none';
});

2. การใช้คุณสมบัติ ARIA

คุณสมบัติ ARIA มีความจำเป็นอย่างยิ่งในการให้ข้อมูลเชิงความหมายแก่เทคโนโลยีสิ่งอำนวยความสะดวก นี่คือรายละเอียดของคุณสมบัติที่สำคัญ:

ตัวอย่าง:

<button aria-describedby="help-tooltip">Submit</button>
<div id="help-tooltip" role="tooltip" aria-hidden="true">Click here to submit the form.</div>

JavaScript (สำหรับ aria-hidden):

const button = document.querySelector('button[aria-describedby="help-tooltip"]');
const tooltip = document.getElementById('help-tooltip');

button.addEventListener('focus', () => {
  tooltip.setAttribute('aria-hidden', 'false');
  tooltip.style.display = 'block';
});

button.addEventListener('blur', () => {
  tooltip.setAttribute('aria-hidden', 'true');
  tooltip.style.display = 'none';
});

button.addEventListener('mouseover', () => {
  tooltip.setAttribute('aria-hidden', 'false');
  tooltip.style.display = 'block';
});

button.addEventListener('mouseout', () => {
  tooltip.setAttribute('aria-hidden', 'true');
  tooltip.style.display = 'none';
});

3. การจัดการ Focus

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

อย่างไรก็ตาม อาจมีบางสถานการณ์ที่คุณ *ต้องการ* ย้ายโฟกัสไปที่ Tooltip โดยเฉพาะอย่างยิ่งหาก Tooltip มีองค์ประกอบที่สามารถโต้ตอบได้ (เช่น ลิงก์, ปุ่ม) ในกรณีนี้ ต้องแน่ใจว่า:

ในกรณีส่วนใหญ่ การหลีกเลี่ยงการจัดการโฟกัสภายใน Tooltip เองเป็นสิ่งที่แนะนำเพื่อความเรียบง่ายและการใช้งานที่สะดวก

4. การตรวจสอบความเปรียบต่างของสีที่เพียงพอ

ความเปรียบต่างของสีมีความสำคัญอย่างยิ่งต่อการอ่าน ตรวจสอบให้แน่ใจว่าสีของข้อความใน Tooltip ของคุณมีความเปรียบต่างเพียงพอกับสีพื้นหลัง แนวทางปฏิบัติการเข้าถึงเนื้อหาเว็บ (WCAG) แนะนำอัตราส่วนความเปรียบต่างอย่างน้อย 4.5:1 สำหรับข้อความปกติ และ 3:1 สำหรับข้อความขนาดใหญ่ (18pt หรือ 14pt ตัวหนา)

ใช้เครื่องมือตรวจสอบความเปรียบต่างออนไลน์เพื่อตรวจสอบว่าการเลือกสีของคุณเป็นไปตามมาตรฐานการเข้าถึงได้ ตัวอย่างเครื่องมือตรวจสอบความเปรียบต่างได้แก่:

ตัวอย่าง (ความเปรียบต่างที่ดี):

.tooltip {
  background-color: #000;
  color: #fff;
}

ตัวอย่าง (ความเปรียบต่างที่ไม่ดี):

.tooltip {
  background-color: #fff;
  color: #eee;
}

5. การให้เวลาที่เพียงพอ

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

หากเนื้อหาของ Tooltip มีความยาว ควรพิจารณาให้มีวิธีให้ผู้ใช้ปิด Tooltip ด้วยตนเอง (เช่น ปุ่มปิด หรือการกดปุ่ม Escape)

6. การทำให้สามารถปิดได้

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

วิธีการปิด Tooltip:

ตัวอย่าง (ปุ่มปิด):

<div id="my-tooltip" role="tooltip" aria-hidden="true">
  This is my tooltip content.
  <button onclick="hideTooltip()">Close</button>
</div>

ตัวอย่าง (ปุ่ม Escape):

document.addEventListener('keydown', function(event) {
  if (event.key === 'Escape') {
    hideTooltip(); // แทนที่ด้วยฟังก์ชันซ่อน Tooltip ของคุณ
  }
});

7. การหลีกเลี่ยงการใช้งานมากเกินไป

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

ทางเลือกอื่นนอกเหนือจาก Tooltip:

ข้อควรพิจารณาขั้นสูง

เนื้อหาแบบไดนามิก

หากเนื้อหา Tooltip ของคุณถูกสร้างขึ้นแบบไดนามิก (เช่น โหลดจาก API หรืออัปเดตตามข้อมูลที่ผู้ใช้ป้อน) ตรวจสอบให้แน่ใจว่าคุณสมบัติ aria-describedby และการมองเห็นของ Tooltip ได้รับการอัปเดตตามนั้น ใช้ JavaScript เพื่อจัดการการอัปเดตเหล่านี้

การจัดตำแหน่ง

พิจารณาตำแหน่งของ Tooltip อย่างรอบคอบ หลีกเลี่ยงการวางในลักษณะที่บดบังเนื้อหาที่สำคัญหรือทำให้เลย์เอาต์เปลี่ยนแปลง คำนึงถึงขนาดหน้าจอและความละเอียดที่แตกต่างกัน และใช้ CSS เพื่อให้แน่ใจว่า Tooltip จะมองเห็นได้ภายใน viewport เสมอ

อุปกรณ์เคลื่อนที่

โดยปกติแล้ว Tooltip จะอาศัยการโต้ตอบแบบ hover ซึ่งไม่มีในอุปกรณ์แบบสัมผัส สำหรับอุปกรณ์เคลื่อนที่ ให้พิจารณาใช้วิธีการโต้ตอบทางเลือก เช่น:

การทดสอบ Tooltip ของคุณ

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

วิธีการทดสอบ:

การทำให้เป็นสากล (i18n) และการปรับให้เข้ากับท้องถิ่น (l10n)

เมื่อพัฒนา Tooltip สำหรับผู้ชมทั่วโลก ควรคำนึงถึงการทำให้เป็นสากลและการปรับให้เข้ากับท้องถิ่น:

สรุป

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

แหล่งข้อมูลอ้างอิง