עברית

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

פונקציית Light-Dark ב-CSS: התאמת ערכת נושא אוטומטית לרשת גלובלית

בעולם המחובר גלובלית של ימינו, אתרי אינטרנט צריכים להיות נגישים ומושכים ויזואלית למשתמשים מרקעים והעדפות מגוונים. אחת הדרכים היעילות ביותר להשיג זאת היא באמצעות התאמת ערכת נושא אוטומטית, ובפרט, הצעת ערכות נושא בהירות וכהות המסתגלות להגדרות המערכת של המשתמש. פוסט זה ידריך אתכם ביישום פונקציונליות זו באמצעות שאילתות מדיה (media queries) ומאפיינים מותאמים אישית (custom properties) ב-CSS, ובכך יבטיח חווית גלישה חלקה ונוחה עבור הקהל הבינלאומי שלכם.

מדוע ליישם ערכות נושא בהירות וכהות אוטומטיות?

ישנן מספר סיבות משכנעות לשלב התאמת ערכת נושא אוטומטית בפרויקטי הרשת שלכם:

כיצד ליישם התאמת ערכת נושא אוטומטית עם CSS

הליבה של התאמת ערכת נושא אוטומטית טמונה בשאילתת המדיה prefers-color-scheme. שאילתת מדיה זו ב-CSS מאפשרת לכם לזהות את ערכת הצבעים המועדפת על המשתמש (בהירה או כהה) ולהחיל סגנונות תואמים.

שלב 1: הגדרת מאפיינים מותאמים אישית (משתני CSS)

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


:root {
  --background-color: #ffffff; /* רקע ערכה בהירה */
  --text-color: #000000; /* טקסט ערכה בהירה */
  --link-color: #007bff; /* קישור ערכה בהירה */
  --button-background-color: #f0f0f0;
  --button-text-color: #000;
}

@media (prefers-color-scheme: dark) {
  :root {
    --background-color: #121212; /* רקע ערכה כהה */
    --text-color: #ffffff; /* טקסט ערכה כהה */
    --link-color: #66b3ff; /* קישור ערכה כהה */
    --button-background-color: #333;
    --button-text-color: #fff;
  }
}

בדוגמה זו, אנו מגדירים משתנים עבור צבע רקע, צבע טקסט, צבע קישור וצבעי כפתורים. הבורר :root מחיל משתנים אלה על כל המסמך. לאחר מכן, שאילתת המדיה @media (prefers-color-scheme: dark) דורסת משתנים אלה עם ערכים של ערכת נושא כהה כאשר המשתמש הגדיר את המערכת שלו למצב כהה.

שלב 2: החלת המאפיינים המותאמים אישית על הסגנונות שלכם

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


body {
  background-color: var(--background-color);
  color: var(--text-color);
  transition: background-color 0.3s, color 0.3s; /* מעבר חלק */
}

a {
  color: var(--link-color);
}

button {
  background-color: var(--button-background-color);
  color: var(--button-text-color);
  border: none;
  padding: 10px 20px;
  cursor: pointer;
}

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

שלב 3: בדיקה וליטוש

בדקו את היישום שלכם ביסודיות בדפדפנים ומערכות הפעלה שונות. דפדפנים מודרניים כמו Chrome, Firefox, Safari ו-Edge תומכים באופן מלא בשאילתת המדיה prefers-color-scheme. תוכלו לעבור בין מצב בהיר לכהה בהגדרות מערכת ההפעלה שלכם כדי לראות את השינויים משתקפים באתר.

טכניקות מתקדמות ושיקולים נוספים

מתן אפשרות למתג ערכת נושא ידני

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

HTML:


<button id="theme-toggle">Toggle Theme</button>

JavaScript:


const themeToggle = document.getElementById('theme-toggle');
const body = document.body;

let currentTheme = localStorage.getItem('theme') || 'auto'; // ברירת מחדל היא אוטומטי

function setTheme(theme) {
  if (theme === 'dark') {
    body.classList.add('dark-theme');
    body.classList.remove('light-theme');
  } else if (theme === 'light') {
    body.classList.add('light-theme');
    body.classList.remove('dark-theme');
  } else {
    body.classList.remove('light-theme', 'dark-theme');
  }
  localStorage.setItem('theme', theme);
  currentTheme = theme;
}

// החלת ערכת הנושא הראשונית בטעינת הדף
if (currentTheme === 'dark') {
  setTheme('dark');
} else if (currentTheme === 'light') {
  setTheme('light');
} else {
  // אם מוגדר כאוטומטי, נאפשר ל-prefers-color-scheme להחליט
}


themeToggle.addEventListener('click', () => {
    if (currentTheme === 'auto'){
        setTheme('light');
    } else if (currentTheme === 'light') {
        setTheme('dark');
    } else {
        setTheme('auto');
    }
});

CSS: הוסיפו את ה-CSS הבא יחד עם ה-CSS הקודם. שימו לב לדריסה הידנית:


body.light-theme {
  --background-color: #ffffff; /* רקע ערכה בהירה */
  --text-color: #000000; /* טקסט ערכה בהירה */
  --link-color: #007bff; /* קישור ערכה בהירה */
  --button-background-color: #f0f0f0;
  --button-text-color: #000;
}

body.dark-theme {
  --background-color: #121212; /* רקע ערכה כהה */
  --text-color: #ffffff; /* טקסט ערכה כהה */
  --link-color: #66b3ff; /* קישור ערכה כהה */
  --button-background-color: #333;
  --button-text-color: #fff;
}

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

טיפול בתמונות וקבצי SVG

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


img.light-mode {
  display: block;
}

img.dark-mode {
  display: none;
}

@media (prefers-color-scheme: dark) {
  img.light-mode {
    display: none;
  }

  img.dark-mode {
    display: block;
  }
}

קטע קוד זה מציג תמונה אחת (עם המחלקה light-mode) במצב בהיר ותמונה אחרת (עם המחלקה dark-mode) במצב כהה.

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

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

שיקולי ביצועים

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

להלן מספר שיטות מומלצות לאופטימיזציית ביצועים:

שיטות עבודה מומלצות לנגישות

ודאו שערכות הנושא הבהירה והכהה שלכם עומדות בהנחיות הנגישות, כגון WCAG (Web Content Accessibility Guidelines). זה כולל מתן ניגודיות צבעים מספקת, שימוש ב-HTML סמנטי, ווידוא שכל הרכיבים האינטראקטיביים נגישים למקלדת.

להלן מספר שיטות עבודה מומלצות וספציפיות לנגישות שיש לפעול לפיהן:

דוגמאות מאזורים שונים

שקלו את הדוגמאות הבאות לאופן שבו ניתן להתאים ערכות נושא בהירות וכהות לקהלים גלובליים מגוונים:

סיכום

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

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