Custom CSS Scrollbar for Firefox

后端 未结 10 2398
遥遥无期
遥遥无期 2020-11-22 02:23

I want to customize a scrollbar with CSS.

I use this WebKit CSS code, which works well for Safari and Chrome:

::-webkit-scrollbar {
    width: 15px;
         


        
10条回答
  •  忘了有多久
    2020-11-22 02:48

    Firefox 64 adds support for the spec draft CSS Scrollbars Module Level 1, which adds two new properties of scrollbar-width and scrollbar-color which give some control over how scrollbars are displayed.

    You can set scrollbar-color to one of the following values (descriptions from MDN):

    • auto Default platform rendering for the track portion of the scrollbar, in the absence of any other related scrollbar color properties.
    • dark Show a dark scrollbar, which can be either a dark variant of scrollbar provided by the platform, or a custom scrollbar with dark colors.
    • light Show a light scrollbar, which can be either a light variant of scrollbar provided by the platform, or a custom scrollbar with light colors.
    • Applies the first color to the scrollbar thumb, the second to the scrollbar track.

    Note that dark and light values are not currently implemented in Firefox.

    macOS notes:

    The auto-hiding semi-transparent scrollbars that are the macOS default cannot be colored with this rule (they still choose their own contrasting color based on the background). Only the permanently showing scrollbars (System Preferences > Show Scroll Bars > Always) are colored.

    Visual Demo:

    .scroll {
      width: 20%;
      height: 100px;
      border: 1px solid grey;
      overflow: scroll;
      display: inline-block;
    }
    .scroll-color-auto {
      scrollbar-color: auto;
    }
    .scroll-color-dark {
      scrollbar-color: dark;
    }
    .scroll-color-light {
      scrollbar-color: light;
    }
    .scroll-color-colors {
      scrollbar-color: orange lightyellow;
    }

    auto

    auto

    auto

    auto

    auto

    auto

    dark

    dark

    dark

    dark

    dark

    dark

    light

    light

    light

    light

    light

    light

    colors

    colors

    colors

    colors

    colors

    colors

    You can set scrollbar-width to one of the following values (descriptions from MDN):

    • auto The default scrollbar width for the platform.
    • thin A thin scrollbar width variant on platforms that provide that option, or a thinner scrollbar than the default platform scrollbar width.
    • none No scrollbar shown, however the element will still be scrollable.

    You can also set a specific length value, according to the spec. Both thin and a specific length may not do anything on all platforms, and what exactly it does is platform-specific. In particular, Firefox doesn't appear to be currently support a specific length value (this comment on their bug tracker seems to confirm this). The thin keywork does appear to be well-supported however, with macOS and Windows support at-least.

    It's probably worth noting that the length value option and the entire scrollbar-width property are being considered for removal in a future draft, and if that happens this particular property may be removed from Firefox in a future version.

    Visual Demo:

    .scroll {
      width: 30%;
      height: 100px;
      border: 1px solid grey;
      overflow: scroll;
      display: inline-block;
    }
    .scroll-width-auto {
      scrollbar-width: auto;
    }
    .scroll-width-thin {
      scrollbar-width: thin;
    }
    .scroll-width-none {
      scrollbar-width: none;
    }

    auto

    auto

    auto

    auto

    auto

    auto

    thin

    thin

    thin

    thin

    thin

    thin

    none

    none

    none

    none

    none

    none

提交回复
热议问题