Skip to content

Commit f5406b8

Browse files
committed
Merge branch 'develop'
2 parents 6acf37f + 76a4fe6 commit f5406b8

File tree

9 files changed

+9556
-942
lines changed

9 files changed

+9556
-942
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ Start scroll animation from current position to the anchor point
8181
#### target
8282
Type: HTMLElement|Number
8383

84-
Target element/position to be scrolled. Target position is the distance to the top of the page.
84+
Target element/position to be scrolled. Target position is the scrolling distance. It must be negative if the upward movement is desired.
8585

8686
#### options
8787
Type: Object

dist/moveTo.js

Lines changed: 12 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/*!
22
* MoveTo - A lightweight scroll animation javascript library without any dependency.
3-
* Version 1.6.1 (12-04-2017 10:18)
3+
* Version 1.7.0 (01-10-2017 14:12)
44
* Licensed under MIT
55
* Copyright 2017 Hasan Aydoğdu <[email protected]>
66
*/
@@ -32,24 +32,6 @@ var MoveTo = function () {
3232
return -c * (t * t * t * t - 1) + b;
3333
}
3434

35-
/**
36-
* Returns html element's top and left offset
37-
* @param {HTMLElement} elem - Element
38-
* @return {object} Element top and left offset
39-
*/
40-
function getOffsetSum(elem) {
41-
var top = 0;
42-
var left = 0;
43-
while (elem) {
44-
top += elem.offsetTop;
45-
left += elem.offsetLeft;
46-
elem = elem.offsetParent;
47-
}
48-
return {
49-
top: top, left: left };
50-
51-
}
52-
5335
/**
5436
* Merge two object
5537
*
@@ -135,12 +117,16 @@ var MoveTo = function () {
135117

136118
options = mergeObject(this.options, options);
137119

138-
var to = typeof target === 'number' ? target : getOffsetSum(target).top;
120+
var distance = typeof target === 'number' ? target : target.getBoundingClientRect().top;
139121
var from = window.pageYOffset;
140-
to -= options.tolerance;
141-
var change = to - from;
142122
var startTime = null;
143123
var lastPageYOffset = void 0;
124+
distance -= options.tolerance;
125+
126+
// if distance is `0`, it means to back to the top
127+
if (distance === 0) {
128+
distance -= from;
129+
}
144130

145131
// rAF loop
146132
var loop = function loop(currentTime) {
@@ -157,24 +143,24 @@ var MoveTo = function () {
157143

158144
if (lastPageYOffset) {
159145
if (
160-
change > 0 && lastPageYOffset > currentPageYOffset ||
161-
change < 0 && lastPageYOffset < currentPageYOffset)
146+
distance > 0 && lastPageYOffset > currentPageYOffset ||
147+
distance < 0 && lastPageYOffset < currentPageYOffset)
162148
{
163149
return options.callback(target);
164150
}
165151
}
166152
lastPageYOffset = currentPageYOffset;
167153

168154
var val = _this2.easeFunctions[options.easing](
169-
timeElapsed, from, change, options.duration);
155+
timeElapsed, from, distance, options.duration);
170156

171157

172158
window.scroll(0, val);
173159

174160
if (timeElapsed < options.duration) {
175161
window.requestAnimationFrame(loop);
176162
} else {
177-
window.scroll(0, to);
163+
window.scroll(0, distance + from);
178164
options.callback(target);
179165
}
180166
};

dist/moveTo.min.js

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

gulpfile.js

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,3 @@ gulp.task('serve', () => {
6565
browserSync(browserSyncConfigs);
6666
gulp.watch(['src/**/*.js'], ['scripts', reload]);
6767
});
68-
69-
70-

0 commit comments

Comments
 (0)