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

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

מבוא

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

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

תמיכה בדפדפן

  • 121
  • 121
  • 64
  • x

מקור

101 סרגלי גלילה

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

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

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

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

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

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

סרגלי גלילה שמוצגים בשכבת-על

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

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

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

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

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

הנכסים 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-* בעת העברת העכבר בלבד