skrollr-rails 0.6.8 → 0.6.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/skrollr-rails/version.rb +1 -1
- data/vendor/assets/javascripts/skrollr.js +12 -10
- data/vendor/assets/javascripts/skrollr.menu.js +48 -7
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d5626de761b7901972f19f4277355e76216f0618
|
4
|
+
data.tar.gz: 8c4c9c685a9401950575be87ad5fb6c42fb64790
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 76583ccee883c1694638fffa79ae619be25200559ece7d1fbe4807fb4764509e12bbf665edd8ca84bbcbf56645cd5025cda8a8b6f4743092f0c3568a88bc109d
|
7
|
+
data.tar.gz: d76f4d63911bb8d79cee67f12ab11aab2292ec14fcab0ded1105a961fe9e237bf57d45a708f23546863730a2b1af26d28405b9bf136316a9b56f929f5b20a721
|
@@ -19,7 +19,7 @@
|
|
19
19
|
init: function(options) {
|
20
20
|
return _instance || new Skrollr(options);
|
21
21
|
},
|
22
|
-
VERSION: '0.6.
|
22
|
+
VERSION: '0.6.9'
|
23
23
|
};
|
24
24
|
|
25
25
|
//Minify optimization.
|
@@ -147,7 +147,7 @@
|
|
147
147
|
requestAnimFrame = function(callback) {
|
148
148
|
//How long did it take to render?
|
149
149
|
var deltaTime = _now() - lastTime;
|
150
|
-
var delay = Math.max(0,
|
150
|
+
var delay = Math.max(0, 1000 / 60 - deltaTime);
|
151
151
|
|
152
152
|
window.setTimeout(function() {
|
153
153
|
lastTime = _now();
|
@@ -555,12 +555,6 @@
|
|
555
555
|
|
556
556
|
if(_isMobile) {
|
557
557
|
_mobileOffset = Math.min(Math.max(top, 0), _maxKeyFrame);
|
558
|
-
|
559
|
-
//That's were we actually "scroll" on mobile.
|
560
|
-
if(_skrollrBody) {
|
561
|
-
//Set the transform ("scroll it").
|
562
|
-
skrollr.setStyle(_skrollrBody, 'transform', 'translate(0, ' + -(_mobileOffset) + 'px) ' + _translateZ);
|
563
|
-
}
|
564
558
|
} else {
|
565
559
|
window.scrollTo(0, top);
|
566
560
|
}
|
@@ -622,6 +616,8 @@
|
|
622
616
|
initialElement.blur();
|
623
617
|
}
|
624
618
|
|
619
|
+
_instance.stopAnimateTo();
|
620
|
+
|
625
621
|
initialElement = e.target;
|
626
622
|
initialTouchY = lastTouchY = currentTouchY;
|
627
623
|
initialTouchX = currentTouchX;
|
@@ -632,7 +628,7 @@
|
|
632
628
|
deltaY = currentTouchY - lastTouchY;
|
633
629
|
deltaTime = currentTouchTime - lastTouchTime;
|
634
630
|
|
635
|
-
_instance.setScrollTop(_mobileOffset - deltaY);
|
631
|
+
_instance.setScrollTop(_mobileOffset - deltaY, true);
|
636
632
|
|
637
633
|
lastTouchY = currentTouchY;
|
638
634
|
lastTouchTime = currentTouchTime;
|
@@ -889,7 +885,7 @@
|
|
889
885
|
renderTop = (_scrollAnimation.startTop + progress * _scrollAnimation.topDiff) | 0;
|
890
886
|
}
|
891
887
|
|
892
|
-
_instance.setScrollTop(renderTop);
|
888
|
+
_instance.setScrollTop(renderTop, true);
|
893
889
|
}
|
894
890
|
//Smooth scrolling only if there's no animation running and if we're not on mobile.
|
895
891
|
else if(!_isMobile) {
|
@@ -915,6 +911,12 @@
|
|
915
911
|
}
|
916
912
|
}
|
917
913
|
|
914
|
+
//That's were we actually "scroll" on mobile.
|
915
|
+
if(_isMobile && _skrollrBody) {
|
916
|
+
//Set the transform ("scroll it").
|
917
|
+
skrollr.setStyle(_skrollrBody, 'transform', 'translate(0, ' + -(_mobileOffset) + 'px) ' + _translateZ);
|
918
|
+
}
|
919
|
+
|
918
920
|
//Did the scroll position even change?
|
919
921
|
if(_forceRender || _lastTop !== renderTop) {
|
920
922
|
//Remember in which direction are we scrolling?
|
@@ -16,6 +16,8 @@
|
|
16
16
|
var MENU_OFFSET_ATTR = 'data-menu-offset';
|
17
17
|
|
18
18
|
var skrollr = window.skrollr;
|
19
|
+
var history = window.history;
|
20
|
+
var supportsHistory = !!history.pushState;
|
19
21
|
|
20
22
|
/*
|
21
23
|
Since we are using event bubbling, the element that has been clicked
|
@@ -52,12 +54,22 @@
|
|
52
54
|
return;
|
53
55
|
}
|
54
56
|
|
57
|
+
if(handleLink(link)) {
|
58
|
+
e.preventDefault();
|
59
|
+
}
|
60
|
+
};
|
61
|
+
|
62
|
+
/*
|
63
|
+
Handles the click on a link. May be called without an actual click event.
|
64
|
+
When the fake flag is set, the link won't change the url and the position won't be animated.
|
65
|
+
*/
|
66
|
+
var handleLink = function(link, fake) {
|
55
67
|
//Don't use the href property (link.href) because it contains the absolute url.
|
56
68
|
var href = link.getAttribute('href');
|
57
69
|
|
58
70
|
//Check if it's a hashlink.
|
59
71
|
if(!/^#/.test(href)) {
|
60
|
-
return;
|
72
|
+
return false;
|
61
73
|
}
|
62
74
|
|
63
75
|
//Now get the targetTop to scroll to.
|
@@ -73,7 +85,7 @@
|
|
73
85
|
|
74
86
|
//Ignore the click if no target is found.
|
75
87
|
if(!scrollTarget) {
|
76
|
-
return;
|
88
|
+
return false;
|
77
89
|
}
|
78
90
|
|
79
91
|
targetTop = _skrollrInstance.relativeToAbsolute(scrollTarget, 'top', 'top');
|
@@ -85,17 +97,27 @@
|
|
85
97
|
}
|
86
98
|
}
|
87
99
|
|
100
|
+
if(supportsHistory && !fake) {
|
101
|
+
history.pushState({top: targetTop}, '', href);
|
102
|
+
}
|
103
|
+
|
88
104
|
//Now finally scroll there.
|
89
|
-
if(_animate) {
|
105
|
+
if(_animate && !fake) {
|
90
106
|
_skrollrInstance.animateTo(targetTop, {
|
91
107
|
duration: _duration,
|
92
108
|
easing: _easing
|
93
109
|
});
|
94
110
|
} else {
|
95
|
-
|
111
|
+
defer(function() {
|
112
|
+
_skrollrInstance.setScrollTop(targetTop);
|
113
|
+
});
|
96
114
|
}
|
97
115
|
|
98
|
-
|
116
|
+
return true;
|
117
|
+
};
|
118
|
+
|
119
|
+
var defer = function(fn) {
|
120
|
+
window.setTimeout(fn, 1);
|
99
121
|
};
|
100
122
|
|
101
123
|
/*
|
@@ -113,6 +135,17 @@
|
|
113
135
|
|
114
136
|
//Use event bubbling and attach a single listener to the document.
|
115
137
|
skrollr.addEvent(document, 'click', handleClick);
|
138
|
+
|
139
|
+
if(supportsHistory) {
|
140
|
+
window.addEventListener('popstate', function(e) {
|
141
|
+
var state = e.state || {};
|
142
|
+
var top = state.top || 0;
|
143
|
+
|
144
|
+
defer(function() {
|
145
|
+
_skrollrInstance.setScrollTop(top);
|
146
|
+
});
|
147
|
+
}, false);
|
148
|
+
}
|
116
149
|
};
|
117
150
|
|
118
151
|
//Private reference to the initialized skrollr.
|
@@ -124,9 +157,17 @@
|
|
124
157
|
|
125
158
|
//In case the page was opened with a hash, prevent jumping to it.
|
126
159
|
//http://stackoverflow.com/questions/3659072/jquery-disable-anchor-jump-when-loading-a-page
|
127
|
-
|
160
|
+
defer(function() {
|
128
161
|
if(window.location.hash) {
|
129
162
|
window.scrollTo(0, 0);
|
163
|
+
|
164
|
+
if(document.querySelector) {
|
165
|
+
var link = document.querySelector('a[href="' + window.location.hash + '"]');
|
166
|
+
|
167
|
+
if(link) {
|
168
|
+
handleLink(link, true);
|
169
|
+
}
|
170
|
+
}
|
130
171
|
}
|
131
|
-
}
|
172
|
+
});
|
132
173
|
}(document, window));
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: skrollr-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nick Reed
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-07-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|