diff --git a/example/pages/slider/index.js b/example/pages/slider/index.js
index e49cdb3d..6dcfce23 100644
--- a/example/pages/slider/index.js
+++ b/example/pages/slider/index.js
@@ -1,10 +1,20 @@
import Page from '../../common/page';
Page({
+ data: {
+ currentValue: 30
+ },
+
onChange(event) {
wx.showToast({
icon: 'none',
title: `当前值:${event.detail}`
});
+ },
+
+ onDrag(event) {
+ this.setData({
+ currentValue: event.detail.value
+ });
}
});
diff --git a/example/pages/slider/index.wxml b/example/pages/slider/index.wxml
index af35de55..73547424 100644
--- a/example/pages/slider/index.wxml
+++ b/example/pages/slider/index.wxml
@@ -1,5 +1,9 @@
-
+
@@ -13,7 +17,11 @@
-
+
@@ -25,3 +33,16 @@
bind:change="onChange"
/>
+
+
+
+
+ {{ currentValue }}/100
+
+
+
diff --git a/example/pages/slider/index.wxss b/example/pages/slider/index.wxss
index fe4bbc38..e7c58e47 100644
--- a/example/pages/slider/index.wxss
+++ b/example/pages/slider/index.wxss
@@ -1,3 +1,13 @@
.slider {
margin: 0 15px 30px;
-}
\ No newline at end of file
+}
+
+.custom-button {
+ width: 44px;
+ color: #fff;
+ font-size: 10px;
+ line-height: 20px;
+ text-align: center;
+ border-radius: 100px;
+ background-color: #f44;
+}
diff --git a/packages/slider/README.md b/packages/slider/README.md
index 6637d211..7491123a 100644
--- a/packages/slider/README.md
+++ b/packages/slider/README.md
@@ -42,6 +42,34 @@ Page({
```
+#### 自定义按钮
+
+```html
+
+
+ {{ currentValue }}/100
+
+
+```
+
+```js
+Page({
+ data: {
+ currentValue: 30
+ },
+
+ onDrag(event) {
+ this.setData({
+ currentValue: event.detail.value
+ });
+ }
+});
+```
+
### API
| 参数 | 说明 | 类型 | 默认值 |
@@ -57,6 +85,7 @@ Page({
| 事件名 | 说明 | 参数 |
|-----------|-----------|-----------|
+| bind:drag | 拖动进度条时触发 | event.detail.value: 当前进度 |
| bind:change | 进度值改变后触发 | event.detail: 当前进度 |
### 外部样式类
diff --git a/packages/slider/index.less b/packages/slider/index.less
index b9e0a015..f7b1e104 100644
--- a/packages/slider/index.less
+++ b/packages/slider/index.less
@@ -12,24 +12,27 @@
}
&__button {
- position: absolute;
- top: 50%;
- right: 0;
width: 20px;
height: 20px;
border-radius: 50%;
background-color: @white;
- transform: translate3d(50%, -50%, 0);
box-shadow: 0 1px 2px rgba(0, 0, 0, .5);
- /* use pseudo element to expand touch area */
- &::after {
- content: '';
+ &-wrapper {
position: absolute;
- width: 200%;
- height: 200%;
- top: -50%;
- left: -50%;
+ top: 50%;
+ right: 0;
+ transform: translate3d(50%, -50%, 0);
+
+ /* use pseudo element to expand touch area */
+ &::after {
+ content: '';
+ position: absolute;
+ width: 200%;
+ height: 200%;
+ top: -50%;
+ left: -50%;
+ }
}
}
diff --git a/packages/slider/index.ts b/packages/slider/index.ts
index 6831293f..d09cd1ea 100644
--- a/packages/slider/index.ts
+++ b/packages/slider/index.ts
@@ -6,6 +6,7 @@ VantComponent({
props: {
disabled: Boolean,
+ useButtonSlot: Boolean,
max: {
type: Number,
value: 100
@@ -78,6 +79,7 @@ VantComponent({
barStyle: `width: ${value}%; height: ${this.data.barHeight};`
});
+ this.$emit('drag', { value });
if (end) {
this.$emit('change', value);
}
diff --git a/packages/slider/index.wxml b/packages/slider/index.wxml
index 24b073bd..b7497989 100644
--- a/packages/slider/index.wxml
+++ b/packages/slider/index.wxml
@@ -1,11 +1,23 @@
-
+
+ >
+
+
+