diff --git a/src/js/plugin/handler/click-rail.js b/src/js/plugin/handler/click-rail.js index b8d5928..bbd1521 100644 --- a/src/js/plugin/handler/click-rail.js +++ b/src/js/plugin/handler/click-rail.js @@ -1,6 +1,5 @@ 'use strict'; -var _ = require('../../lib/helper'); var instances = require('../instances'); var updateGeometry = require('../update-geometry'); var updateScroll = require('../update-scroll'); @@ -13,18 +12,10 @@ function bindClickRailHandler(element, i) { i.event.bind(i.scrollbarY, 'click', stopPropagation); i.event.bind(i.scrollbarYRail, 'click', function (e) { - var halfOfScrollbarLength = _.toInt(i.scrollbarYHeight / 2); - var positionTop = i.railYRatio * (e.pageY - window.pageYOffset - pageOffset(i.scrollbarYRail).top - halfOfScrollbarLength); - var maxPositionTop = i.railYRatio * (i.railYHeight - i.scrollbarYHeight); - var positionRatio = positionTop / maxPositionTop; + var positionTop = e.pageY - window.pageYOffset - pageOffset(i.scrollbarYRail).top; + var direction = positionTop > i.scrollbarYTop ? 1 : -1; - if (positionRatio < 0) { - positionRatio = 0; - } else if (positionRatio > 1) { - positionRatio = 1; - } - - updateScroll(element, 'top', (i.contentHeight - i.containerHeight) * positionRatio); + updateScroll(element, 'top', element.scrollTop + direction * i.containerHeight); updateGeometry(element); e.stopPropagation(); @@ -32,18 +23,10 @@ function bindClickRailHandler(element, i) { i.event.bind(i.scrollbarX, 'click', stopPropagation); i.event.bind(i.scrollbarXRail, 'click', function (e) { - var halfOfScrollbarLength = _.toInt(i.scrollbarXWidth / 2); - var positionLeft = i.railXRatio * (e.pageX - window.pageXOffset - pageOffset(i.scrollbarXRail).left - halfOfScrollbarLength); - var maxPositionLeft = i.railXRatio * (i.railXWidth - i.scrollbarXWidth); - var positionRatio = positionLeft / maxPositionLeft; + var positionLeft = e.pageX - window.pageXOffset - pageOffset(i.scrollbarXRail).left; + var direction = positionLeft > i.scrollbarXLeft ? 1 : -1; - if (positionRatio < 0) { - positionRatio = 0; - } else if (positionRatio > 1) { - positionRatio = 1; - } - - updateScroll(element, 'left', ((i.contentWidth - i.containerWidth) * positionRatio) - i.negativeScrollAdjustment); + updateScroll(element, 'left', element.scrollLeft + direction * i.containerWidth); updateGeometry(element); e.stopPropagation();