Slider 滑块
滑动型输入器,展示当前值和可选范围。
基础用法
输入框的基本用法。
<template>
<tu-slider v-model="sliderValue" />
</template>
<script lang="ts" setup>
import { ref } from 'vue';
const sliderValue = ref(20);
</script>
<template>
<tu-slider v-model="sliderValue" />
</template>
<script lang="ts" setup>
import { ref } from 'vue';
const sliderValue = ref(20);
</script>
禁用状态
禁用滑动输入条。
<template>
<tu-slider v-model="sliderValue" disabled />
</template>
<script lang="ts" setup>
import { ref } from 'vue';
const sliderValue = ref(20);
</script>
<template>
<tu-slider v-model="sliderValue" disabled />
</template>
<script lang="ts" setup>
import { ref } from 'vue';
const sliderValue = ref(20);
</script>
设置步长
通过 step 设置步长,默认步长为 1。建议设置能够被 max-min 整除的值,否则会出现可选最大值小于 max 的情况。当设置 show-ticks 时,显示步长刻度线。
步长为 10
步长为 20
步长为 20 并显示步长刻度线
<template>
<p>步长为 10</p>
<tu-slider v-model="sliderValue1" :step="10" />
<p>步长为 20</p>
<tu-slider v-model="sliderValue2" :step="20" />
<p>步长为 20 并显示步长刻度线</p>
<tu-slider v-model="sliderValue3" :step="20" :show-ticks="true" />
</template>
<script lang="ts" setup>
import { ref } from 'vue';
const sliderValue1 = ref(20);
const sliderValue2 = ref(20);
const sliderValue3 = ref(20);
</script>
<template>
<p>步长为 10</p>
<tu-slider v-model="sliderValue1" :step="10" />
<p>步长为 20</p>
<tu-slider v-model="sliderValue2" :step="20" />
<p>步长为 20 并显示步长刻度线</p>
<tu-slider v-model="sliderValue3" :step="20" :show-ticks="true" />
</template>
<script lang="ts" setup>
import { ref } from 'vue';
const sliderValue1 = ref(20);
const sliderValue2 = ref(20);
const sliderValue3 = ref(20);
</script>
添加文本标签
通过设置 marks 可以添加文本标签。
0km
5km
10km
15km
<template>
<tu-slider class="mb-4" v-model="sliderValue" :max="15" :marks="marks" />
</template>
<script lang="ts" setup>
import { ref } from 'vue';
const sliderValue = ref(5);
const marks = {
0: '0km',
5: '5km',
10: '10km',
15: '15km'
};
</script>
<template>
<tu-slider class="mb-4" v-model="sliderValue" :max="15" :marks="marks" />
</template>
<script lang="ts" setup>
import { ref } from 'vue';
const sliderValue = ref(5);
const marks = {
0: '0km',
5: '5km',
10: '10km',
15: '15km'
};
</script>
范围选择
通过设置 range 可开启范围选择,此时 modelValue 为数组。
<template>
<tu-slider v-model="value" range />
</template>
<script lang="ts" setup>
import { ref } from 'vue';
const value = ref([10, 20]);
</script>
<template>
<tu-slider v-model="value" range />
</template>
<script lang="ts" setup>
import { ref } from 'vue';
const value = ref([10, 20]);
</script>
显示输入框
当设置 show-input 时,将显示输入框。
<template>
<tu-slider class="mb-2" :default-value="10" show-input />
<tu-slider v-model="sliderValue" range show-input />
</template>
<script lang="ts" setup>
import { ref } from 'vue';
const sliderValue = ref([0, 10]);
</script>
<template>
<tu-slider class="mb-2" :default-value="10" show-input />
<tu-slider v-model="sliderValue" range show-input />
</template>
<script lang="ts" setup>
import { ref } from 'vue';
const sliderValue = ref([0, 10]);
</script>
竖直滑动条
设置 direction 为 vertical,将会显示竖直的滑动条。
5km
10km
<template>
<tu-slider class="mr-2" v-model="sliderValue1" direction="vertical" />
<tu-slider
class="mr-2"
v-model="sliderValue2"
:show-ticks="true"
:step="20"
direction="vertical"
/>
<tu-slider
direction="vertical"
v-model="sliderValue3"
:max="15"
:marks="marks"
/>
</template>
<script lang="ts" setup>
import { ref } from 'vue';
const sliderValue1 = ref(20);
const sliderValue2 = ref(20);
const sliderValue3 = ref(3);
const marks = {
5: '5km',
10: '10km'
};
</script>
<template>
<tu-slider class="mr-2" v-model="sliderValue1" direction="vertical" />
<tu-slider
class="mr-2"
v-model="sliderValue2"
:show-ticks="true"
:step="20"
direction="vertical"
/>
<tu-slider
direction="vertical"
v-model="sliderValue3"
:max="15"
:marks="marks"
/>
</template>
<script lang="ts" setup>
import { ref } from 'vue';
const sliderValue1 = ref(20);
const sliderValue2 = ref(20);
const sliderValue3 = ref(3);
const marks = {
5: '5km',
10: '10km'
};
</script>
自定义提示
通过设置 format-tooltip 可以自定义提示文字。
<template>
<tu-slider
:min="0"
:max="100"
v-model="sliderValue"
:format-tooltip="fromatter"
/>
</template>
<script lang="ts" setup>
import { ref } from 'vue';
const sliderValue = ref(20);
const fromatter = (value: number): string => {
return `${Math.round((value / 50) * 100)}°`;
};
</script>
<template>
<tu-slider
:min="0"
:max="100"
v-model="sliderValue"
:format-tooltip="fromatter"
/>
</template>
<script lang="ts" setup>
import { ref } from 'vue';
const sliderValue = ref(20);
const fromatter = (value: number): string => {
return `${Math.round((value / 50) * 100)}°`;
};
</script>
不同尺寸
tu-slider 组件提供除了默认值 medium 以外的三种尺寸。
额外的尺寸:large、small、mini,通过设置 size 属性来配置它们。
<template>
<tu-slider class="mb-2" v-model="sliderValue" size="mini" />
<tu-slider class="mb-2" v-model="sliderValue" size="small" />
<tu-slider class="mb-2" v-model="sliderValue" />
<tu-slider v-model="sliderValue" size="large" />
</template>
<script lang="ts" setup>
import { ref } from 'vue';
const sliderValue = ref(20);
</script>
<template>
<tu-slider class="mb-2" v-model="sliderValue" size="mini" />
<tu-slider class="mb-2" v-model="sliderValue" size="small" />
<tu-slider class="mb-2" v-model="sliderValue" />
<tu-slider v-model="sliderValue" size="large" />
</template>
<script lang="ts" setup>
import { ref } from 'vue';
const sliderValue = ref(20);
</script>
Slider API
Slider Attributes
参数名 | 描述 | 类型 | 默认值 |
---|---|---|---|
v-model | 绑定值 | Number Array | - |
default-value | 默认值(非受控状态) | Number Array | 0 |
step | 滑动的步长 | Number | 1 |
min | 滑动范围的最小值 | Number | 0 |
max | 滑动范围的最大值 | Number | - |
marks | 设置显示的标签 | Object | - |
direction | 滑动输入条的方向 | String | horizontal |
disabled | 是否禁用 | Boolean | false |
show-ticks | 是否显示刻度线 | Boolean | false |
show-input | 是否显示输入框 | Boolean | false |
range | 是否开启范围选择 | Boolean | false |
show-tooltip | 是否显示tooltip | Boolean | true |
Slider Events
事件名 | 描述 | 参数 |
---|---|---|
change | 值改变时触发 | Function |