在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
自定义slider组件样式* 实际上是另外写了一个 view 与 slider组件重叠,再把 slider 透明。实现自定义它的样式
JS Page({
data: {
min: 0, // 最小限制
max:5, // 最大限制
value:0, // 当前value
},
// 拖动过程中触发的事件
sliderchanging(e){
var value = e.detail.value;
this.setData({ value: value })
},
// 完成一次拖动后触发的事件
sliderchange(e){
var value = e.detail.value;
this.setData({ value: value })
}
})
WXML <text>slider组件自定义</text> {{value}}
<view class="component-slider">
<!-- 覆盖slider组件盒子 -->
<view class="slider-box">
<!-- 拖动按钮 -->
<view class="slider-btn" style="margin-left: {{ (value-min)*(102/(max-min))-7 }}%;" ></view>
<!-- 未选中区线 -->
<view class="slider-line"></view>
<!-- 选中区线 -->
<view class="slider-line-active" style="width: {{ (value-min)*(102/(max-min))-7 }}%;"></view>
<!-- 显示数字 -->
<view class="slider-number">
<!-- 最小限制大于等于0 -->
<block wx:if="{{min>=0}}" >
<block wx:for="{{max+1}}" wx:key="index" >
<text class="{{value==item?'active':''}}" style="left:{{ (item-min)*(100/(max-min))-2 }}%" >{{item}}</text>
</block>
</block>
<!-- 最小限制小于0 -->
<block wx:else>
<block wx:for="{{(max-min)+1}}" wx:key="index">
<text class="{{value==(item+min)?'active':''}}" style="left:{{ (item)*(102/(max-min))-2 }}%" >{{item+min}}</text>
</block>
</block>
</view>
</view>
<!-- slider组件 -->
<slider block-size="28" bindchange="sliderchange" bindchanging="sliderchanging" min="{{min}}" max="{{max}}" value="{{value}}" />
</view>
按钮每次移动的距离 百分比%: (当前值-最小限制)*(102 /(最大限制-最小限制))- 7 102 和 7 根据需要调整,按钮大小不同,对应的位置也不一样
CSS
最小限制大于0 最小限制为负数 |
请发表评论