מיקוד המקלדת

אנשים רבים משתמשים במקלדת – או בתוכנה או בחומרה שמחקות את הפונקציונליות של מקלדת, כמו מכשיר מתג – כאמצעי הניווט העיקרי שלהם. הסיבה לכך יכולה להיות העדפה אישית, יעילות או חומרה שבורה.

אנשים עם מגבלות פיזיות זמניות, כמו נקע בשורש כף היד או לקויות מוטוריות עדינות כמו תסמונת תעלת שורש כף היד, יכולים לבחור להשתמש במקלדת כדי לנווט. משתמשים עם לקות ראייה או עיוורים יכולים להשתמש במקלדת לניווט בשילוב עם תוכנת ההגדלה או קורא המסך שלהם. עם זאת, יכול להיות שהם ישתמשו בפקודות של מקשי קיצור שונות כדי לנווט במסך בהשוואה למשתמש שאינו רואה.

אנשים מסוימים ללא מוגבלויות יכולים גם לנווט באמצעות מקלדת.

תמיכה במקלדת לכל הנסיבות והמגבלות האלה היא קריטית. חלק גדול מנגישות המקלדת מתמקד במיקוד. המונח 'מיקוד' מתייחס לרכיב במסך שמקבל כרגע קלט מהמקלדת.

במודול הזה אנחנו מתמקדים במבנה HTML ובסגנון CSS לרכיבים שניתנים להדגשה במקלדת ולרכיבים שניתן להתמקד בהם. מודול JavaScript כולל מידע נוסף על ניהול המיקוד ועל הקשות למרכיבים אינטראקטיביים.

סדר ההתמקדות

האלמנטים שמשתמשים במקלדת יכולים לנווט אליהם נקראים אלמנטים שניתן להתמקד בהם. סדר המיקוד, שנקרא גם סדר Tab או סדר ניווט, הוא הסדר שבו האלמנטים מקבלים מיקוד. סדר המיקוד שמוגדר כברירת מחדל צריך להיות לוגי, אינטואיטיבי ותואם לסדר החזותי של הדף.

ברוב השפות, סדר המיקוד מתחיל בחלק העליון של הדף ומסתיים בחלק התחתון, תוך תנועה מימין לשמאל. עם זאת, בשפות מסוימות הקריאה היא מימין לשמאל, ולכן יכול להיות שהסדר של הרכיבים שמוצגים בחזית הדף יהיה שונה בהתאם לשפה הראשית של הדף.

כברירת מחדל, סדר ההתמקדות כולל אלמנטים של HTML שאפשר להתמקד בהם באופן טבעי, כמו קישורים, תיבות סימון ומקורות קלט של טקסט. אלמנטים של HTML שאפשר להתמקד בהם באופן טבעי כוללים תמיכה מובנית בסדר הכרטיסיות וטיפול בסיסי באירועים של מקלדת.

אפשר לעדכן את סדר ההתמקדות כך שיכלול רכיבים שלא מקבלים בדרך כלל את המיקוד, כמו רכיבי HTML לא אינטראקטיביים, רכיבים מותאמים אישית או רכיבים עם ARIA, ולעקוף את הסמנטיקה הטבעית של המיקוד.

Tabindex

סדר ההעברה של המיקוד מתחיל ברכיבים שיש להם מאפיין tabindex חיובי (אם יש כאלה), וממשיך מהמספר החיובי הקטן ביותר למספר החיובי הגדול ביותר (למשל 1, 2, 3). לאחר מכן הוא ממשיך לעבור רכיבים עם tabindex של אפס לפי הסדר שלהם ב-DOM. אלמנטים עם אינדקס שלילי של כרטיסיות יוסרו מסדר ההתמקדות הטבעית.

כשמחילים tabindex של אפס (tabindex="0") על רכיבים שלא ניתן להעביר אליהם את המיקוד בדרך כלל, הם מתווספים לסדר המיקוד הטבעי של הדף בהתאם לאופן שבו הם מופיעים ב-DOM. עם זאת, בניגוד לרכיבי HTML שאפשר להתמקד בהם באופן טבעי, צריך לספק תמיכה נוספת במקלדת כדי שהם יהיו נגישים באופן מלא.

באותו האופן, אם יש רכיב שבדרך כלל אפשר להתמקד בו אבל לא פעיל, כמו לחצן שלא פועל עד שממלאים את השדה להזנת קלט, צריך להוסיף לאלמנט הזה אינדקס טאבים שלילי (tabindex="-1"). הוספת ערך שלילי ל-tabindex מאותת לטכנולוגיות מסייעות ולמקלדות שצריך להסיר את הלחצן הזה מסדר המיקוד הטבעי. אבל אל דאגה – אפשר להשתמש ב-JavaScript כדי להחזיר את המיקוד לאלמנט במקרה הצורך.

בדוגמה הזו, מאפיין tabindex נוסף לאלמנטים שלא מקבלים באופן טבעי את המיקוד. שינינו את הסדר של הרכיבים באמצעות tabindex כדי להמחיש את ההשפעה שלו על סדר המיקוד. זאת דוגמה למה שלא צריך לעשות.

סדר המיקוד החדש משקף את ה-HTML.
צפייה בשימוש במקש Tab על ידי משתמש במקלדת כדי לעבור בין הקוד ב-CodePen.

ברוב האתרים היום יש רשימה ארוכה של קישורי תפריט בכותרת הראשית של הדף, שתמיד זהה בכל הדפים. האפשרות הזו נהדרת לניווט כללי, אבל יכול להיות שהיא תקשה על משתמשים שמשתמשים רק במקלדת להגיע בקלות לתוכן הראשי של האתר בלי ללחוץ על Tab כמה פעמים.

אחת מהדרכים לדלג על קבוצות של קישורים מיותרים או לא שימושיים היא להוסיף קישור דילוג. קישורי דילוג הם קישורי עוגן שמאפשרים לדלג לקטע אחר באותו דף באמצעות מזהה הקטע, במקום לשלוח את המשתמש לדף אחר באתר או למשאב חיצוני. קישורי דילוג מוסיפים בדרך כלל כרכיב הראשון שאפשר להתמקד בו שמשתמשים נתקלים בו כשהם מגיעים לאתר. הם יכולים להיות גלויים או מוסתרים באופן חזותי עד שמשתמשים מקישים על Tab כדי לעבור אליהם, בהתאם לצורכי העיצוב.

כשמשתמש לוחץ על מקש Tab, והקישור לדילוג פעיל, המיקוד במקלדת עובר לקישור לדילוג. המשתמש יכול ללחוץ על הקישור לדילוג ולדלג על הקטע של הכותרת ועל הניווט הראשי. אם הם לא ילחצו על הקישור לדילוג וימשיכו ללחוץ על Tab ב-DOM, הם יועברו לרכיב הבא שאפשר להתמקד בו.

כמו כל הקישורים, חשוב שקישור הדילוג יכלול הקשר לגבי מטרת הקישור. הוספת הביטוי 'דילוג לתוכן הראשי' מאפשרת למשתמש לדעת לאן הקישור יפנה אותו. יש הרבה אפשרויות קוד לבחירה כשאתם מספקים הקשר נוסף לקישורים, כמו aria-labelledby,‏ aria-label או הוספה לתוכן הטקסט של רכיב <a>, כפי שמוצג בדוגמה.

תצוגה מקדימה של CodePen עם מיקוד המקלדת.
צפייה במשתמש במקלדת שמנווט עם או בלי קישור לדילוג.

אינדיקטור למיקוד

כמו שלמדתם, סדר המיקוד הוא היבט חשוב בנגישות של המקלדת. חשוב גם להחליט איזה סגנון יתאים לנושא הזה. כי גם אם סדר המיקוד מעולה, איך משתמש יכול לדעת איפה הוא נמצא בדף ללא העיצוב הנכון?

אינדיקטור מרכז תשומת הלב גלוי הוא חיוני כדי להודיע למשתמשים איפה הם נמצאים בדף בכל שלב. הדבר חשוב במיוחד למשתמשים зряחים שמשתמשים רק במקלדת. האפשרות מיקוד לא מוסתר (מינימום) מבטיחה שאינדיקטור המיקוד לא יהיה מוסתר מתחת לרכיבים אחרים.

עיצוב ברירת המחדל של הדפדפן

כיום, לכל דפדפן אינטרנט מודרני יש סגנון חזותי שונה שמוגדר כברירת מחדל, שחלה על רכיבים שאפשר להתמקד בהם באתר או באפליקציה, וחלקם גלויים יותר מאחרים. כשהמשתמש מקשיב על Tab בדף, הסגנון הזה מוחל כשהרכיב מקבל את המיקוד מהמקלדת.

אם מאפשרים לדפדפן לטפל בעיצוב המיקוד, חשוב לבדוק את הקוד כדי לוודא שהעיצוב לא יעקוף את עיצוב ברירת המחדל של הדפדפן. בדרך כלל, שינוי מברירת המחדל כתוב בתור "outline: 0" או "outline: none" בגיליון הסגנונות. קטע הקוד הקטן הזה יכול להסיר את סגנון הסימון של מיקום המיקוד שמוגדר כברירת מחדל בדפדפן, וכתוצאה מכך המשתמשים יתקשו מאוד לנווט באתר או באפליקציה.

לא מומלץ – ללא קווי מתאר

a:focus {
 
outline: none; /* don't do this! */
}

מומלץ – קו מתאר בסגנון

a:focus {
 
outline: auto 5px Highlight; /* for non-webkit browsers */
 
outline: auto 5px -webkit-focus-ring-color; /* for webkit browsers */
}

סגנונות מותאמים אישית

כמובן, אתם יכולים לחרוג מסגנון ברירת המחדל של הדפדפן וליצור אינדיקטור התמקדות מותאם אישית שמתאים לעיצוב שלכם. כשאתם יוצרים אינדיקטור התמקדות בהתאמה אישית, יש לכם הרבה חופש לבטא את היצירתיות שלכם.

צורה של אינדיקטור מיקוד יכולה להופיע בצורות רבות, כמו קו מתאר, גבול, קו תחתון, תיבה, שינוי רקע או שינוי סגנוני ברור אחר שלא מסתמך על צבע בלבד כדי לציין שהמיקוד של המקלדת פעיל באלמנט הזה.

אתם יכולים לשנות את הסגנון של מחוון המיקוד כדי לוודא שהוא גלוי. לדוגמה, אם לדף יש רקע לבן, אפשר להגדיר ללחצן אינדיקטור של מיקוד עם רקע כחול. אם לדף יש רקע כחול, אפשר להגדיר את אותו סגנון של לחצן להתמקד ברקע לבן.

אפשר לשנות את הסגנון של רכיב המיקוד בהתאם לסוג הרכיב. לדוגמה, אפשר להשתמש בקו תחתון מקווקו לקישורי גוף, אבל לבחור גבול מעוגל לרכיב של לחצן.

סגנון המיקוד כפי שמוצג ב-CSS.
אפשר לראות מה קורה כשמשתמש במקלדת מקשיב על Tab בכל אלמנט שהתמקדתם בו עם סגנון.

אין כלל לגבי מספר הסגנונות של סמלי ההתמקדות בדף אחד, אבל חשוב להשתמש במספר סביר כדי למנוע בלבול מיותר.

בדיקת ההבנה

בודקים את הידע שלכם ב-ARIA וב-HTML.

איזו דוגמה לסגנון CSS של :focus הכי נגישה על רקע לבן?

background-color:black;
outline: none; text-decoration:none; background:none;
outline: 0.5rem solid yellow;
text-decoration: dotted underline 2px blue;

מה המטרה של קישור לדילוג למקום מסוים בדף?

לעזור למשתמש שמשתמש במקלדת לדלג על תוכן לא מעניין.
עזרה למשתמש במקלדת לדלג על קבוצות של קישורים מיותרים או לא שימושיים.