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 | number—Custom 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