Learn how to customize the React Range Slider component with CSS classes, variables, and Sass for flexible styling and seamless integration into your design.
On this page
CSS variables
The slider renders a range, so it reads the range’s tokens, declared on the .form-range that className and style land on: one setting styles both controls. --cui-range-track-fill-bg colours the band between the handles and --cui-range-tick-* the tick marks and their labels.
$form-range-tokens: defaults(
(
--cui-range-track-width: 100%,
--cui-range-track-height: .5rem,
--cui-range-track-cursor: pointer,
--cui-range-track-bg: color-mix(in oklch, var(--cui-bg-2), var(--cui-bg-3)),
--cui-range-track-border-radius: 1rem,
--cui-range-track-box-shadow: var(--cui-box-shadow-inset),
--cui-range-track-fill-bg: var(--cui-primary-base),
--cui-range-track-disabled-bg: color-mix(in oklch, var(--cui-bg-4), var(--cui-fg-3)),
--cui-range-thumb-width: 1rem,
--cui-range-thumb-height: var(--cui-range-thumb-width),
--cui-range-thumb-bg: var(--cui-primary-bg),
--cui-range-thumb-border: 0,
--cui-range-thumb-border-radius: 1rem,
--cui-range-thumb-box-shadow: 0 .1rem .25rem color-mix(in oklch, var(--cui-black) 10%, transparent),
--cui-range-thumb-active-bg: var(--cui-primary-bg-muted),
--cui-range-thumb-disabled-bg: var(--cui-fg-3),
--cui-range-thumb-transition-property: #{"background-color, border-color, box-shadow"},
--cui-range-thumb-transition-duration: .15s,
--cui-range-thumb-transition-timing: ease-in-out,
--cui-range-thumb-focus-ring-width: var(--cui-focus-ring-width),
--cui-range-tick-width: var(--cui-border-width),
--cui-range-tick-height: .5rem,
--cui-range-tick-minor-height: calc(var(--cui-range-tick-height) * .75),
--cui-range-tick-bg: var(--cui-bg-4),
--cui-range-tick-label-margin-top: .125rem,
--cui-range-tick-label-font-size: var(--cui-font-size-sm),
--cui-range-tick-label-color: var(--cui-fg-2),
),
$form-range-tokens
);A vertical slider’s height:
$form-range-vertical-tokens: defaults(
(
--cui-range-vertical-height: 10rem,
),
$form-range-vertical-tokens
);--cui-range-fill-start and --cui-range-fill are not tokens: the component writes them from the lowest and the highest handle, and the CSS draws the band between them.
How to use CSS variables
const customVars = {
'--cui-range-tick-label-color': '#333',
'--cui-range-track-bg': '#f8f9fa',
}
return <CRangeSlider style={customVars} />