סרגל ניווט עם nav
עטפו את התפריט ב-<nav> ושימו את הקישורים ברשימה. Flexbox הופך את הרשימה לסרגל אופקי:
list-style: none ו-padding: 0 מסירים את התבליטים ואת ההזחה. display: block על כל קישור מאפשר ל-padding שלו לתפוס מקום אמיתי בסרגל, כך שכל התיבה עם הריפוד היא אזור הלחיצה. מחקו את השורה display: flex ואותו תפריט הופך לרשימה אנכית, וכך נראה תפריט בסרגל צד.
<nav> עצמו לא נראה כמו כלום. התפקיד שלו הוא משמעות: קוראי מסך חושפים אותו כציון דרך של ניווט, כך שמשתמש יכול לקפוץ לתפריט, או לדלג עליו, בלחיצת מקש אחת.
סימון העמוד הנוכחי
הוסיפו aria-current="page" לקישור של העמוד שמוצג. זה אומר לקוראי מסך "אתם כאן", ונותן ל-CSS נקודת אחיזה להדגשת הקישור:
העבירו את aria-current="page" לקישור אחר וההדגשה עוברת איתו. עיצוב לפי המאפיין במקום לפי class כמו .active שומר על המראה ועל הנגישות מסונכרנים: אי אפשר שיהיה אחד בלי השני.
כמה nav באותו עמוד: תוויות ופירורי לחם
בעמוד יכולים להיות תפריט ראשי, פירורי לחם ותוכן עניינים, כל אחד ב-<nav> משלו. תנו לכל אחד aria-label, כדי שקורא מסך יכריז "Breadcrumb navigation" במקום שלוש רשומות "navigation" זהות:
פירורי לחם משתמשים ברשימה ממוספרת <ol> כי הסדר חשוב. הלוכסנים מגיעים מ-::before ב-CSS, כך שקוראי מסך לא מקריאים "slash" בין כל פריט. הפריט האחרון הוא העמוד הנוכחי ואינו קישור.
תוכן עניינים
רשימה של קישורים לחלקים באותו עמוד היא גם ניווט. קישורי #id קופצים לאלמנט עם ה-id הזה; נסו אותם בתצוגה המקדימה:
כאן התווית מגיעה מכותרת גלויה עם aria-labelledby, וזה עדיף על aria-label כשהכותרת כבר מופיעה על המסך.
כפתור תפריט למובייל
במסכים צרים, תפריטים בדרך כלל מסתתרים מאחורי כפתור. השתמשו ב-<button> אמיתי עם aria-expanded, והשאירו את הקישורים בתוך <nav>:
aria-expanded אומר לקורא מסך אם התפריט פתוח, והמאפיין hidden מסיר את הרשימה גם מהמסך וגם מעץ הנגישות כל עוד היא סגורה. במסכים רחבים הייתם מציגים את הרשימה עם media query ומסתירים את הכפתור.
טעויות נפוצות
- לעטוף כל קבוצת קישורים ב-
<nav>. השתמשו בו לתפריט הראשי, לפירורי לחם, לעימוד ולתוכן עניינים. קישורים בתוך טקסט אינם בלוקים של ניווט. - כפתור תפריט שעשוי מ-
<div>. אי אפשר להעביר אליו פוקוס או ללחוץ עליו במקלדת. השתמשו ב-<button>. - כמה nav בלי תוויות. הוסיפו
aria-labelאוaria-labelledbyלכל אחד כדי שאפשר יהיה להבחין ביניהם. - רק לצבוע את הקישור הנוכחי. הוסיפו
aria-current="page"; צבע לבדו לא מוכרז וייתכן שלא כולם יראו אותו. - קישורים עם
href="#"בפרודקשן. בדמו זה בסדר, אבל פריטי תפריט אמיתיים צריכים כתובות URL אמיתיות כדי שיעבדו כשפותחים אותם בלשונית חדשה. העמוד על קישורים מסביר איך ערכיhrefעובדים.
שאלות נפוצות
מהי התגית nav ב-HTML?
<nav> הוא אלמנט סמנטי שעוטף בלוק של קישורי ניווט מרכזיים, כמו תפריט האתר, תוכן עניינים או פירורי לחם. קוראי מסך מציגים אותו כציון דרך (landmark) של ניווט, כך שמשתמשים יכולים לקפוץ ישר אליו.
האם הקישורים בתוך nav צריכים להיות ברשימה?
זה הדפוס הנפוץ, והוא טוב: <ul> של פריטי <li> מאפשר לקוראי מסך להכריז כמה קישורים יש בתפריט. גם קישורים פשוטים ישירות בתוך <nav> תקינים, למשל לשניים או שלושה קישורים בשורה.
האם כל קבוצת קישורים צריכה אלמנט nav?
לא. השתמשו ב-<nav> רק לבלוקים מרכזיים של ניווט. כמה קישורים בפסקה או רשימה קצרה של קישורים משפטיים בפוטר לא צריכים אותו, ויותר מדי ציוני דרך של ניווט מקשים למצוא כל אחד מהם.
איך יוצרים סרגל ניווט אופקי?
שימו את הקישורים ב-<ul> בתוך <nav>, ואז תנו לרשימה display: flex; list-style: none; padding: 0; ו-gap. Flexbox מסדר את הפריטים בשורה.
איך מציגים את העמוד הנוכחי בסרגל ניווט?
הוסיפו aria-current="page" לקישור של העמוד שהמשתמש נמצא בו, ועצבו אותו עם הסלקטור [aria-current="page"]. כך גם קוראי מסך מכריזים עליו כעמוד הנוכחי.
האם בעמוד יכול להיות יותר מ-nav אחד?
כן, למשל תפריט ראשי, שביל פירורי לחם ותוכן עניינים. תנו לכל אחד aria-label שונה כמו "Main" או "Breadcrumb" כדי שמשתמשי קוראי מסך יוכלו להבחין ביניהם.