תכונות אינטרנט:
שאילתת מדיה של prefers-color-scheme
color-scheme
שאילתת מדיה של prefers-contrast
צבעים מאולצים
צבעי מערכת
color-mix()
Oklab ו-OkLCh
Lab ו-LCH
צבעים יחסיים
צבע נגיש
אל תשתמשו בצבע בלבד כדי לציין את הנוכחות של רכיב בממשק המשתמש או את המצב שלו: השתמשו בסמלים או בצורות כדי להבדיל ביניהם. אל תציינו הצלחה או שגיאות באמצעות צבע בלבד. להשתמש בסמלים או בטקסט.
<!-- Good: Denotes state without colors alone -->
<div class="error-msg">
<span aria-hidden="true">❌</span>
<span>The password entered was invalid.</span>
</div>
ניגודיות
- תקני ניגודיות מינימליים: שמרו על יחס של 4.5:1 לטקסט רגיל ו-3:1 לטקסט גדול או לסמלים.
- עמידה בתקנים של ניגודיות לא טקסטואלית: שמרו על יחס ניגודיות מינימלי של 3:1 בגבולות ובמצבים של רכיבי ממשק המשתמש.
- זה כולל רכיבים חזותיים (גבולות, רקעים, צלליות, קווים תחתונים) שיוצרים את הגבול או מציינים את הנוכחות של רכיב ממשק משתמש (למשל, גבולות של שדה להזנת קלט).
- זה כולל גם אלמנטים חזותיים שמציינים מצבים פעילים בתוך רכיב (למשל, סימני וי בתיבות סימון או מתגים).
- אזהרה: עמידה בדרישה של יחס ניגודיות של 3:1 ברכיבים שהם לא טקסט יכולה להיות מאתגרת בעיצובים מינימליסטיים. מעברי צבעים רכים או צללים פנימיים או חיצוניים עדינים יכולים לרכך את הגבולות החזותיים, ועדיין לעמוד בדרישות הנגישות.
- השתמשו ב-
prefers-contrastרק כשצריך: השתמשו ב-@media (prefers-contrast: more)כשהעיצוב כולל הדגשות בניגודיות נמוכה (למשל, גבולות עדינים, טקסט משני מעומעם) שצריך לחזק. רוב האתרים שכבר עומדים בניגודיות הבסיסית לא יצטרכו את זה.
ערכות צבעים בהירות וכהות
- תמיכה בערכות צבעים בהירות וכהות: מכבדים את
@media (prefers-color-scheme: dark)ומשלבים אותה עם מאפיין ה-CSScolor-schemeכדי שפקדי הטפסים, פסי הגלילה ומשטחים אחרים שעברו עיבוד (render) על ידי סוכן המשתמש (UA) יתאימו. פרטים נוספים מופיעים במאמר בנושא מצב כהה.
מצב צבעים מאולצים
- תמיכה במצב "צבעים מאולצים": במצב "צבעים מאולצים" (ניגודיות גבוהה ב-Windows), הדפדפן מבטל את הצבעים שהוגדרו על ידי היוצר ומחליף אותם במילות מפתח של המערכת, ומסיר את
background-image,box-shadowו-border-image. מגדירים חלופות לצבעי המערכת של אסימוני הצבעים באמצעות@media (forced-colors: active). - משתמשים ב-
forced-color-adjust: noneרק כשהצבע הוא מידע חיוני (הדגשת תחביר, דוגמית של כלי לבחירת צבעים). אל תשתמשו ב-forced-color-adjust: noneרק כדי לשמור על האסתטיקה. - אל תסתמכו על
background-image,box-shadowאוborder-imageכדי להעביר גבולות, מפרידים או מצב: הם נעלמים בצבעים מאולצים (ולעיתים קרובות גם בהדפסה). אם אין ברירה, צריך לוודא שיש חלופה במצב צבעים מאולצים, כמוoutlineאוborderעם מילות מפתח של צבעי המערכת (CanvasText,LinkText,ButtonText,Highlight,GrayTextוכו').
יוצר גוונים
לפני שיוצרים גוונים באופן דינמי, כדאי לבדוק אם אפשר להשתמש בטוקן עיצוב קיים ומוגדר מראש. כך המעצב יכול לשלוט הרבה יותר בעיצוב ולוודא שהוא עקבי.
אם אתם צריכים ליצור צבעים בהירים או כהים יותר באופן דינמי:
- אל תשנו רק את ערוץ הבהירות ב-
oklch/oklabאו ב-lch/lab, למשלoklab(from var(--primary) 0.9 a b). למרות שבאופן תיאורטי זו הדרך הנכונה, הדפדפנים עדיין לא מטמיעים מיפוי של סולם צבעים, ולכן הצבע שמתקבל לא צפוי. - אפשר להשתמש ב-
color-mix()כדי לערבב עם לבן או שחור (רצוי ב-oklab). כך הצבע נשאר בטווח הצבעים, אבל זה נוטה להפחית את הרוויה של הצבעים יותר מדי וליצור גוונים דהויים. - אפשר לשלב את התאמת הבהירות עם כל אחת מהשיטות האחרות (למשל,
color-mix(in oklab, oklch(from var(--primary) 0.9 c h), white 30%)) כדי לאזן בין השתיים, אבל כדאי להימנע מהתאמת בהירות של יותר מ-30%.