איך אנחנו בונים טאבים נגישים? שאלה מצויינת, אנחנו צריכים מספר קטן של מאפיינים וזהו.
תגית עוטפת כמו div , עם מאפיין אחד:
role="tablist"
<div role="tablist"></div>
בתוך התגית נוסיף מספר כפתורים (כמספר הטאבים שאנחנו רוצים) ולכל כפתור נוסיף את המאפיינים הבאים:
<button role="tab" aria-selected="true" onclick="tabClickedFn()">tab 1</button> <button role="tab" aria-selected="false" onclick="tabClickedFn()">tab 2</button> <button role="tab" aria-selected="false" onclick="tabClickedFn()">tab 3</button>
על פי הקוד למעלה אפשר לראות שיש לנו 3 כפתורים שמשמשים כטאב כל אחד.
בנוסף, יש לכל כפתור מאפיין aria-selected שהוא מסוג bool ולכן מקבל true או false.
אפשר להגיד שמבחינת נגישות סיימנו, מה נשאר לעשות?
- יש לשנות בכפתור שנלחץ את aria-selected ל-true ואת שאר הכפתורים ל-false. במקביל צריך לשנות את התוכן שמגיע מיד אחריהם בהתאם לטאב שנלחץ. כמובן שאת כל זה אנחנו עושים עם JS
- להוסיף עיצוב לכפתורים כדי שיראו כמו טאבים.
והנה הקוד מחובר:
<div role="tablist"> <button role="tab" aria-selected="true" onclick="tabClickedFn()">tab 1</button> <button role="tab" aria-selected="false" onclick="tabClickedFn()">tab 2</button> <button role="tab" aria-selected="false" onclick="tabClickedFn()">tab 3</button> </div> <div class="tab-content-wrapper show" id="content1"></div> <div class="tab-content-wrapper" id="content2"></div> <div class="tab-content-wrapper" id="content3"></div>
לא לשכוח שעדיין מדובר בכפתורים ולכן הדילוג בינהם הוא בעזרת טאב, אם רוצים שזה יהי בעזרת החצים אז צריך להוסיף פונקציה שבודקת לחיצה על כפתור ואיזה כפתור נלחץ.
<button role="tab" aria-selected="true" onclick="tabClickedFn()" onkeydown="movingLeftAndRightFn(event)">tab 1</button>
בפונקציה נבדוק את המקש שנלחץ כך:
movingLeftAndRightFn(event) {
if (event.which === 37 || event.code === "ArrowLeft") {
if (tabCounter > 0) {
tabCounter--;
classChangeFn();
}
}
if (event.which === 39 || event.code === "ArrowRight") {
if (tabCounter < tabMax) {
tabCounter++;
classChangeFn();
}
}
}בודקים אם הכפתור שנלחץ מעניין אותנו ואם כן אז בודקים שאין חריגה מכמות הטאבים שיש לנו, גבול תחתון יהיה 0 והגבול העליון יהיה מספר הטאבים שיש לנו.
כמובן שהמימוש יכול קצת להשתנות בהתאם לבניה וכתיבת הסקריפט אבל אני מאמין שהרעיון ברור.
בהצלחה :))





