חזרה למאמרים

Web Design

איך לעצב מצב כהה ובהיר ב-CSS בלבד ללא JavaScript וללא הבהובים

מדריך מעשי לשימוש בפונקציית light-dark ומאפיין color-scheme ב-CSS. למדו איך לבטל את הבהוב המסך הלבן בטעינה ולחסוך קוד מיותר.

3 דקות קריאהCSS · Dark Mode · Frontend · Web Development · UX

TL;DR

פונקציית light-dark() ב-CSS ומאפיין color-scheme מאפשרים להגדיר עיצוב למצב כהה ובהיר באותה שורת קוד. בלי סקריפטים, בלי כפילות קוד, ובלי הבהוב לבן מציק בטעינה.

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

הסיבה קלאסית: ניהלנו את ערכת הנושא עם JavaScript. עד שהסקריפט ירד, רץ וקרא את ה-LocalStorage, הדפדפן כבר הספיק לרנדר את הדף בלבן בוהק. הבעיה הזו נקראת FOUC (Flash of Unstyled Content).

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

הגדרה · color-scheme

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


1. להגדיר את color-scheme ברמת ה-Root

הצעד הראשון והחשוב ביותר אינו קשור לצבעים שלכם, אלא להוראה ישירה למנוע הרנדור של הדפדפן. כשאתם כותבים :root { color-scheme: light dark; }, אתם מודיעים לדפדפן שהאתר מוכן לשני המצבים.

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

זהו. הבהוב ה-FOUC חוסל.

0ms

זמן השהייה בטעינת מצב כהה כשמשתמשים ב-color-scheme טבעי

מקור: Chrome DevTools, 2026


2. להשתמש בפונקציית ()light-dark ישירות במאפיינים

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

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

body {
  background-color: light-dark(#ffffff, #121212);
  color: light-dark(#1a1a1a, #f0f0f0);
}

הדפדפן בוחר אוטומטית את הערך הנכון לפי ה-color-scheme שגודר ב-root. קצר. נקי.

הגדרה · light-dark()

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


3. לשלב משתני CSS לארגון מלא של העיצוב

אל תפזרו את הפונקציה בכל הקובץ. השיטה הנכונה היא להגדיר משתני CSS מרכזיים בבלוק ה-:root ולעבוד איתם לאורך כל הפרויקט.

הנה דוגמה למבנה עבודה נקי בסטודיו:

:root {
  color-scheme: light dark;
  
  --bg-primary: light-dark(#ffffff, #0a0a0a);
  --text-main: light-dark(#222222, #e5e5e5);
  --brand-accent: light-dark(#0066cc, #4d94ff);
}

.card {
  background: var(--bg-primary);
  color: var(--text-main);
  border: 1px solid light-dark(#e0e0e0, #333333);
}

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


4. לאפשר מעקף ידני (Toggle) בלי להרוס את הנייטיב

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

הפתרון הוא שינוי המאפיין color-scheme בלבד בעזרת data-attribute ספציפי על ה-HTML.

html[data-theme="light"] {
  color-scheme: light;
}

html[data-theme="dark"] {
  color-scheme: dark;
}

במצב הזה, כשמחלקה או מאפיין משנים את color-scheme ל-dark, כל פונקציות ה-light-dark() בעמוד עוברות מיד לערך השני שלהן. שורת JavaScript בודדת בלחיצה על כפתור — והעיצוב כולו מתעדכן.

אם אתם שומרים את העדפת המשתמש ב-LocalStorage, הקפידו לקרוא אותה בתוך סקריפט חוסם קצר ב-head המגדיר את המאפיין data-theme בלבד.


5. השוואה: השיטה הישנה מול השיטה המודרנית

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

היבטהשיטה הישנה (JavaScript + Classes)השיטה המודרנית (CSS light-dark)
הבהוב בטעינה (FOUC)נפוץ מאוד, דורש טריקים מורכבים0% הבהוב, מטופל ברמת הדפדפן
תחזוקת הקודהכפלת קוד ודריסת מחלקותשורת קוד אחת לכל משתנה
ביצועיםמעבד סקריפטים בטעינהאפס משאבי מעבד (Zero JS)
רכיבי נייטיבנדרש עיצוב מותאם לטפסים ולסרגליםמותאמים אוטומטית לפי color-scheme

💡

בניית אתרים מודרנית ב-2026 פירושה לתת לדפדפן לעשות את מה שהוא יודע לעשות הכי טוב. אל תכתבו קוד JavaScript בשביל משהו ש-CSS פותר בשורת קוד אחת.

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

שאלות נפוצות

כל מה שעוד רצית לדעת

האם פונקציית light-dark נתמכת בכל הדפדפנים ב-2026?
כן, כל הדפדפנים המובילים תומכים בפונקציה באופן מלא. היא הפכה לסטנדרט בסיסי בתיכנון ממשקים.
איך מונעים מהמסך להבהב בלבן כשהגולש מעדיף מצב כהה?
מגדירים color-scheme: light dark ברמת האלמנט העליון (root). הדפדפן מבין את ההעדפה ברמת ה-Engine ומציג רקע כהה מיד.
האם עדיין צריך JavaScript כדי לאפשר לגולש להחליף מצב ידנית?
עבור כפתור החלפה ידני אפשר להשתמש ב-CSS בעזרת סלקטורים כמו data-theme או class, אך ניהול ברירת המחדל לפי מערכת ההפעלה נעשה ב-CSS טהור.
AB

כתב

אדיר בן יעקב · Adir Ben Yaakov

מקים JustBetterSite, סוכנות בניית אתרים ושיווק דיגיטלי בתל אביב. מתמחה ב-GEO (Generative Engine Optimization) — בנייה של אתרים שמופיעים בתשובות של ChatGPT, Claude, Perplexity ו-Gemini, לא רק בגוגל.

עוד עליי →

להמשך הקריאה

מאמרים קשורים