diff --git a/example/pages/slider/index.wxml b/example/pages/slider/index.wxml index 40badd53..94dd2207 100644 --- a/example/pages/slider/index.wxml +++ b/example/pages/slider/index.wxml @@ -9,9 +9,8 @@ diff --git a/packages/slider/README.md b/packages/slider/README.md index a2c15a2d..2921508c 100644 --- a/packages/slider/README.md +++ b/packages/slider/README.md @@ -29,7 +29,7 @@ Page({ ### 指定选择范围 ```html - + ``` ### 禁用 diff --git a/packages/slider/index.ts b/packages/slider/index.ts index 53138e56..8a27e924 100644 --- a/packages/slider/index.ts +++ b/packages/slider/index.ts @@ -70,19 +70,22 @@ VantComponent({ onClick(event: Weapp.TouchEvent) { if (this.data.disabled) return; + const { min } = this.data; + this.getRect('.van-slider').then((rect: WechatMiniprogram.BoundingClientRectCallbackResult) => { - const value = (event.detail.x - rect.left) / rect.width * 100; + const value = (event.detail.x - rect.left) / rect.width * this.getRange() + min; this.updateValue(value, true); }); }, updateValue(value: number, end: boolean, drag: boolean) { value = this.format(value); - const { barHeight } = this.data; + const { barHeight, min } = this.data; + const width = `${((value - min) * 100) / this.getRange()}%`; this.set({ value, - barStyle: `width: ${value}%; height: ${addUnit(barHeight)};` + barStyle: `width: ${width}; height: ${addUnit(barHeight)};` }); if (drag) { @@ -94,6 +97,11 @@ VantComponent({ } }, + getRange() { + const { max, min } = this.data; + return max - min; + }, + format(value: number) { const { max, min, step } = this.data; return Math.round(Math.max(min, Math.min(value, max)) / step) * step;