עיצוב סרגל הגלילה

משתמשים במאפיינים scrollbar-width ו-scrollbar-color כדי להגדיר סגנון לסרגלי גלילה.

מבוא

מגרסה 2 של Chrome אפשר לעצב את סרגלי הגלילה באמצעות פסאודו-אלמנטים של ::-webkit-scrollbar-*. הגישה הזו פועלת היטב ב-Chrome וב-Safari, אבל היא אף פעם לא עברה סטנדרטיזציה על ידי קבוצת העבודה של CSS.

המאפיינים scrollbar-width ו-scrollbar-color, שהם חלק ממפרט מודול העיצוב של פסי הגלילה ב-CSS ברמה 1, עברו תהליך סטנדרטיזציה. הנכסים האלה נתמכים החל מ-Chrome 121.

Browser Support

  • Chrome: 121.
  • Edge: 121.
  • Firefox: 64.
  • Safari: 26.2.

Source

סרגלי גלילה – מדריך למתחילים

המבנה של סרגל גלילה

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

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

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

סרגלי גלילה קלאסיים וסרגלי גלילה בשכבת-על

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

סרגלי גלילה בשכבת-על

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

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

סרגלי גלילה קלאסיים

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

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

המאפיינים scrollbar-color ו-scrollbar-width

הוספת צבע לסרגלי הגלילה באמצעות scrollbar-color

המאפיין scrollbar-color מאפשר לשנות את ערכת הצבעים של פסי הגלילה. המאפיין מקבל שני ערכים מסוג <color>. הערך הראשון של <color> קובע את הצבע של האגודל, והערך השני קובע את הצבע של הפס.

.scroller {
  scrollbar-color: hotpink blue;
}

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

הדגמה: עיצוב של סרגלי גלילה: scrollbar-color

כדי להשתמש בעיבוד ברירת המחדל שמספקת מערכת ההפעלה, צריך להשתמש בערך auto.

שינוי הגודל של פס הגלילה באמצעות scrollbar-width

המאפיין scrollbar-width מאפשר לבחור פס גלילה צר יותר, או אפילו להסתיר את פס הגלילה לחלוטין בלי להשפיע על אפשרות הגלילה.

הערכים הקבילים הם auto,‏ thin ו-none.

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

אי אפשר להשתמש בערך <length> כמו 16px בשדה scrollbar-width.

.scroller {
  scrollbar-width: thin;
}

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

הדגמה: עיצוב של סרגלי גלילה: scrollbar-width

תמיכה בגרסאות ישנות יותר של דפדפנים

כדי לתת מענה לגרסאות דפדפן שלא תומכות ב-scrollbar-color וב-scrollbar-width, אפשר להשתמש גם במאפיינים החדשים scrollbar-* ו-::-webkit-scrollbar-*.

.scroller {
    --scrollbar-color-thumb: hotpink;
    --scrollbar-color-track: blue;
    --scrollbar-width: thin;
    --scrollbar-width-legacy: 10px;
}

/* Modern browsers with `scrollbar-*` support */
@supports (scrollbar-width: auto) {
    .scroller {
        scrollbar-color: var(--scrollbar-color-thumb) var(--scrollbar-color-track);
        scrollbar-width: var(--scrollbar-width);
    }
}

/* Legacy browsers with `::-webkit-scrollbar-*` support */
@supports selector(::-webkit-scrollbar) {
    .scroller::-webkit-scrollbar-thumb {
        background: var(--scrollbar-color-thumb);
    }
    .scroller::-webkit-scrollbar-track {
        background: var(--scrollbar-color-track);
    }
    .scroller::-webkit-scrollbar {
        max-width: var(--scrollbar-width-legacy);
        max-height: var(--scrollbar-width-legacy);
    }
}
הדגמה: עיצוב של סרגלי גלילה באמצעות scrollbar-* עם חזרה ל-::-webkit-scrollbar-*

הערה: כשמגדירים את width או את height של ::-webkit-scrollbar, תמיד מוצג סרגל גלילה בשכבת-על, ולמעשה הוא הופך לסרגל גלילה קלאסי.

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

.scroller::-webkit-scrollbar-thumb {
    background: transparent;
}
.scroller::-webkit-scrollbar-track {
    background: transparent;
}
.scroller:hover::-webkit-scrollbar-thumb {
    background: var(--scrollbar-color-thumb);
}
.scroller:hover::-webkit-scrollbar-track {
    background: var(--scrollbar-color-track);
}

.scroller:hover {
    --fix: ; /* This custom property invalidates styles on hover, thereby enforcing a style recomputation. This is needed to work around a bug in Safari. */
}
הדגמה: עיצוב פסי גלילה באמצעות scrollbar-* עם חזרה ל-::-webkit-scrollbar-*, והחלת הצבעים של ::-webkit-scrollbar-* רק כשמעבירים את העכבר מעל