Slider
A slider is a UI element that lets users select a single value or a range of values along a bar.
Slider API
Import
import { Slider } from '@mui/base/Slider';
// or
import { Slider } from '@mui/base';Learn about the difference by reading this guide on minimizing bundle size.
Props of the native component are also available.
| Name | Type | Default | Description | 
|---|---|---|---|
| aria-label | string | - | The label of the slider. | 
| aria-labelledby | string | - | The id of the element containing a label for the slider. | 
| aria-valuetext | string | - | A string value that provides a user-friendly name for the current value of the slider. | 
| defaultValue | Array<number> | number | - | The default value. Use when the component is not controlled. | 
| disabled | bool | false | If  | 
| disableSwap | bool | false | If  | 
| getAriaLabel | func | - | Accepts a function which returns a string value that provides a user-friendly name for the thumb labels of the slider. This is important for screen reader users. Signature: function(index: number) => string
 | 
| getAriaValueText | func | - | Accepts a function which returns a string value that provides a user-friendly name for the current value of the slider. This is important for screen reader users. Signature: function(value: number, index: number) => string
 | 
| isRtl | bool | false | If  | 
| marks | Array<{ label?: node, value: number }> | bool | false | Marks indicate predetermined values to which the user can move the slider. If  | 
| max | number | 100 | The maximum allowed value of the slider. Should not be equal to min. | 
| min | number | 0 | The minimum allowed value of the slider. Should not be equal to max. | 
| name | string | - | Name attribute of the hidden  | 
| onChange | func | - | Callback function that is fired when the slider's value changed. Signature: function(event: Event, value: number | Array
 | 
| onChangeCommitted | func | - | Callback function that is fired when the  Signature: function(event: React.SyntheticEvent | Event, value: number | Array
 | 
| orientation | 'horizontal' | 'vertical' | 'horizontal' | The component orientation. | 
| scale | func | function Identity(x) { return x; } | A transformation function, to change the scale of the slider. Signature: function(x: any) => any | 
| shiftStep | number | 10 | The granularity with which the slider can step through values when using Page Up/Page Down or Shift + Arrow Up/Arrow Down. | 
| slotProps | { input?: func | object, mark?: func | object, markLabel?: func | object, rail?: func | object, root?: func | object, thumb?: func | object, track?: func | object, valueLabel?: any | func } | {} | The props used for each slot inside the Slider. | 
| slots | { input?: elementType, mark?: elementType, markLabel?: elementType, rail?: elementType, root?: elementType, thumb?: elementType, track?: elementType, valueLabel?: elementType } | {} | The components used for each slot inside the Slider. Either a string to use a HTML element or a component. See Slots API below for more details. | 
| step | number | 1 | The granularity with which the slider can step through values. (A "discrete" slider.) The  | 
| tabIndex | number | - | Tab index attribute of the hidden  | 
| track | 'inverted' | 'normal' | false | 'normal' | The track presentation: 
 | 
| value | Array<number> | number | - | The value of the slider. For ranged sliders, provide an array with two values. | 
| valueLabelFormat | func | string | function Identity(x) { return x; } | The format function the value label's value. | 
ref is forwarded to the root element.To learn how to customize the slot, check out the Overriding component structure guide.
| Slot name | Class name | Default component | Description | 
|---|---|---|---|
| root | .base-Slider-root | 'span' | The component that renders the root. | 
| track | .base-Slider-track | 'span' | The component that renders the track. | 
| rail | .base-Slider-rail | 'span' | The component that renders the rail. | 
| thumb | .base-Slider-thumb | 'span' | The component that renders the thumb. | 
| mark | .base-Slider-mark | 'span' | The component that renders the mark. | 
| markLabel | .base-Slider-markLabel | 'span' | The component that renders the mark label. | 
| valueLabel | The component that renders the value label. | ||
| input | 'input' | The component that renders the input. | 
These class names are useful for styling with CSS. They are applied to the component's slots when specific states are triggered.
| Class name | Description | 
|---|---|
| .base--active | State class applied to the thumb element if it's active. | 
| .base--disabled | State class applied to the root and thumb element if disabled={true}. | 
| .base--focusVisible | State class applied to the thumb element if keyboard focused. | 
| .base-Slider-dragging | State class applied to the root if a thumb is being dragged. | 
| .base-Slider-markActive | Class name applied to the mark element if active (depending on the value). | 
| .base-Slider-marked | Class name applied to the root element if marksis provided with at least one label. | 
| .base-Slider-markLabelActive | Class name applied to the mark label element if active (depending on the value). | 
| .base-Slider-trackFalse | Class name applied to the root element if track={false}. | 
| .base-Slider-trackInverted | Class name applied to the root element if track="inverted". | 
| .base-Slider-vertical | Class name applied to the root element if orientation="vertical". |