uniapp 滑动条
uniapp 滑动条实现方法
uniapp中实现滑动条功能可以通过多种方式完成,以下介绍几种常见的实现方法:
使用uniapp内置组件
uniapp提供了slider组件,可以快速实现滑动条功能:
<template>
<view>
<slider
:value="sliderValue"
@change="sliderChange"
min="0"
max="100"
step="1"
activeColor="#FF0000"
backgroundColor="#EEEEEE"
block-color="#FF0000"
block-size="20"
/>
<text>当前值:{{sliderValue}}</text>
</view>
</template>
<script>
export default {
data() {
return {
sliderValue: 50
}
},
methods: {
sliderChange(e) {
this.sliderValue = e.detail.value
}
}
}
</script>
自定义滑动条实现
如果需要更灵活的样式,可以手动实现滑动条:

<template>
<view class="custom-slider">
<view class="slider-track">
<view
class="slider-progress"
:style="{width: progress + '%'}"
></view>
<view
class="slider-thumb"
:style="{left: progress + '%'}"
@touchstart="handleTouchStart"
@touchmove="handleTouchMove"
></view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
progress: 50,
startX: 0,
sliderWidth: 0
}
},
mounted() {
this.getSliderWidth()
},
methods: {
getSliderWidth() {
const query = uni.createSelectorQuery().in(this)
query.select('.slider-track').boundingClientRect(data => {
this.sliderWidth = data.width
}).exec()
},
handleTouchStart(e) {
this.startX = e.touches[0].pageX
},
handleTouchMove(e) {
const moveX = e.touches[0].pageX
const diff = moveX - this.startX
const newProgress = this.progress + (diff / this.sliderWidth * 100)
this.progress = Math.max(0, Math.min(100, newProgress))
this.startX = moveX
}
}
}
</script>
<style>
.custom-slider {
padding: 20px;
}
.slider-track {
height: 4px;
background-color: #eee;
position: relative;
border-radius: 2px;
}
.slider-progress {
height: 100%;
background-color: #FF0000;
border-radius: 2px;
position: absolute;
left: 0;
}
.slider-thumb {
width: 20px;
height: 20px;
background-color: #FF0000;
border-radius: 50%;
position: absolute;
top: 50%;
transform: translate(-50%, -50%);
z-index: 2;
}
</style>
使用第三方组件库
uniapp生态中有许多第三方UI组件库提供了增强的滑动条组件:
-
uView UI:

<template> <view> <u-slider v-model="value" min="0" max="100" inactiveColor="#f2f2f2" activeColor="#2979ff" ></u-slider> </view> </template> -
ColorUI:
<template> <view> <c-slider :value="value" @change="onChange" :showValue="true" /> </view> </template>
跨平台兼容性注意事项
不同平台对滑动条的实现有细微差异:
- 微信小程序:
slider组件表现良好 - H5:自定义滑动条体验更佳
- App:需要考虑手势冲突问题
建议在真机上进行测试,确保各平台表现一致。





