From 0faf6fb0eeda8419b9d31594cac7ff52fd41dd6e Mon Sep 17 00:00:00 2001 From: Benjy Cui Date: Mon, 13 Jul 2015 13:58:33 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=8A=A8=E7=94=BB=E5=AF=BC?= =?UTF-8?q?=E8=87=B4=20Slider=20=E6=BB=91=E5=9D=97=E5=81=8F=E7=A7=BB?= =?UTF-8?q?=E7=9A=84=20Bug=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Slider.jsx | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/Slider.jsx b/src/Slider.jsx index e0d68f8..03015aa 100644 --- a/src/Slider.jsx +++ b/src/Slider.jsx @@ -130,7 +130,7 @@ var Slider = React.createClass({ }, _calValueByPos: function (position, callback) { - var pixelOffset = position - this.state.sliderStart; + var pixelOffset = position - this.getSliderStart(); // pixelOffset -= (this.state.handleSize / 2); var nextValue = this._trimAlignValue(this._calcValue(pixelOffset)); @@ -251,11 +251,17 @@ var Slider = React.createClass({ this.setState({ upperBound: slider.clientWidth, - sliderLength: Math.abs(sliderMax - sliderMin), - sliderStart: sliderMin + sliderLength: Math.abs(sliderMax - sliderMin) }); }, + getSliderStart: function() { + var slider = this.refs.slider.getDOMNode(); + var rect = slider.getBoundingClientRect(); + + return rect.left; + }, + handleTouchStart: function(e) { if (this.props.disabled || e.touches.length > 1 || (e.type === 'touchend' && e.touches.length > 0)) { return;