Skip to content

Slider

Slider with spring-curve thumb drag. Tooltip appears on focus/drag, supports keyboard precision stepping.

Basic Usage

Value: 40

vue
<script setup>
import { ref } from 'vue'
const value = ref(40)
</script>

<template>
  <ASlider v-model="value" />
</template>

Custom Range & Step

Value: 50

vue
<ASlider v-model="value" :min="0" :max="200" :step="10" />

Decimal Step

Supports arbitrary steps with precision rounding to avoid floating-point drift.

Value: 0.4

vue
<ASlider v-model="value" :min="0" :max="1" :step="0.1" />

Tooltip Formatting

vue
<ASlider v-model="value" :format-tooltip="v => `${v}%`" />

Size / Disabled

vue
<ASlider v-model="value" size="sm" />
<ASlider v-model="value" size="md" />
<ASlider v-model="value" disabled />

API

Props

NameTypeDefaultDescription
modelValuenumber0Current value
minnumber0Minimum value
maxnumber100Maximum value
stepnumber1Step, supports decimals
disabledbooleanfalseDisabled
size'sm' | 'md''md'Size
tooltipbooleantrueShow tooltip
formatTooltip(value) => string | numberCustom tooltip content

Emits

NameParametersDescription
update:modelValuevalueTriggered continuously on drag/step
changevalueTriggered on drag end or keyboard step

Keyboard Interaction

KeyBehavior
/ Decrease by 1 step
/ Increase by 1 step
Shift + ArrowStep × 10
HomeJump to minimum
EndJump to maximum

Accessibility

  • Thumb uses role="slider" with aria-valuemin / aria-valuemax / aria-valuenow / aria-orientation
  • tabindex set to -1 when disabled, focus ring follows global :focus-visible
  • Screen reader announces current value

MIT License