jquery-sticky-rails 0.0.2 → 0.0.3
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/jquery_sticky_rails/version.rb +1 -1
- data/vendor/assets/javascripts/jquery-sticky/plugin.js +81 -251
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 34c4eff3a8d8be2301e7b00c50caafb7af55f705
|
4
|
+
data.tar.gz: 125aec83e1af43753772670d0829e17e946c5811
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 326f458e94681077358a30940330e75723f9b93f39a70f77ecc1305fe4b0fd3fbd523377830f7a242c4cc8c5d0721ee317374eaa9fc6fc9826bccdaea0fcdefc
|
7
|
+
data.tar.gz: 75e1c258e040fe62e153a42d4c545ae0d8f93b78f34f9205d61c494b821c12e28d82bbf78bc12fb55efffa03e189af95b41b9ddb865ebbfc1cbf90d5568a09d4
|
@@ -1,268 +1,98 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
// Description: Makes an element on the page stick on the screen as you scroll
|
10
|
-
// It will only set the 'top' and 'position' of your element, you
|
11
|
-
// might need to adjust the width in some cases.
|
1
|
+
var big_image;
|
2
|
+
$().ready(function() {
|
3
|
+
$('.selector').click(function() {
|
4
|
+
SelectColor(this);
|
5
|
+
});
|
6
|
+
var selectCol = 0;
|
7
|
+
if (selectCol == 0) {
|
8
|
+
if ($('body').hasClass('landing-page1')) {
|
12
9
|
|
13
|
-
(function (factory) {
|
14
|
-
if (typeof define === 'function' && define.amd) {
|
15
|
-
// AMD. Register as an anonymous module.
|
16
|
-
define(['jquery'], factory);
|
17
|
-
} else if (typeof module === 'object' && module.exports) {
|
18
|
-
// Node/CommonJS
|
19
|
-
module.exports = factory(require('jquery'));
|
20
|
-
} else {
|
21
|
-
// Browser globals
|
22
|
-
factory(jQuery);
|
23
10
|
}
|
24
|
-
}
|
25
|
-
var slice = Array.prototype.slice; // save ref to original slice()
|
26
|
-
var splice = Array.prototype.splice; // save ref to original slice()
|
27
|
-
|
28
|
-
var defaults = {
|
29
|
-
topSpacing: 0,
|
30
|
-
bottomSpacing: 0,
|
31
|
-
className: 'is-sticky',
|
32
|
-
wrapperClassName: 'sticky-wrapper',
|
33
|
-
center: false,
|
34
|
-
getWidthFrom: '',
|
35
|
-
widthFromWrapper: true, // works only when .getWidthFrom is empty
|
36
|
-
responsiveWidth: false
|
37
|
-
},
|
38
|
-
$window = $(window),
|
39
|
-
$document = $(document),
|
40
|
-
sticked = [],
|
41
|
-
windowHeight = $window.height(),
|
42
|
-
scroller = function() {
|
43
|
-
var scrollTop = $window.scrollTop(),
|
44
|
-
documentHeight = $document.height(),
|
45
|
-
dwh = documentHeight - windowHeight,
|
46
|
-
extra = (scrollTop > dwh) ? dwh - scrollTop : 0;
|
47
|
-
|
48
|
-
for (var i = 0, l = sticked.length; i < l; i++) {
|
49
|
-
var s = sticked[i],
|
50
|
-
elementTop = s.stickyWrapper.offset().top,
|
51
|
-
etse = elementTop - s.topSpacing - extra;
|
52
|
-
|
53
|
-
//update height in case of dynamic content
|
54
|
-
s.stickyWrapper.css('height', s.stickyElement.outerHeight());
|
55
|
-
|
56
|
-
if (scrollTop <= etse) {
|
57
|
-
if (s.currentTop !== null) {
|
58
|
-
s.stickyElement
|
59
|
-
.css({
|
60
|
-
'width': '',
|
61
|
-
'position': '',
|
62
|
-
'top': ''
|
63
|
-
});
|
64
|
-
s.stickyElement.parent().removeClass(s.className);
|
65
|
-
s.stickyElement.trigger('sticky-end', [s]);
|
66
|
-
s.currentTop = null;
|
67
|
-
}
|
68
|
-
}
|
69
|
-
else {
|
70
|
-
var newTop = documentHeight - s.stickyElement.outerHeight()
|
71
|
-
- s.topSpacing - s.bottomSpacing - scrollTop - extra;
|
72
|
-
if (newTop < 0) {
|
73
|
-
newTop = newTop + s.topSpacing;
|
74
|
-
} else {
|
75
|
-
newTop = s.topSpacing;
|
76
|
-
}
|
77
|
-
if (s.currentTop !== newTop) {
|
78
|
-
var newWidth;
|
79
|
-
if (s.getWidthFrom) {
|
80
|
-
newWidth = $(s.getWidthFrom).width() || null;
|
81
|
-
} else if (s.widthFromWrapper) {
|
82
|
-
newWidth = s.stickyWrapper.width();
|
83
|
-
}
|
84
|
-
if (newWidth == null) {
|
85
|
-
newWidth = s.stickyElement.width();
|
86
|
-
}
|
87
|
-
s.stickyElement
|
88
|
-
.css('width', newWidth)
|
89
|
-
.css('position', 'fixed')
|
90
|
-
.css('top', newTop);
|
91
|
-
|
92
|
-
s.stickyElement.parent().addClass(s.className);
|
93
|
-
|
94
|
-
if (s.currentTop === null) {
|
95
|
-
s.stickyElement.trigger('sticky-start', [s]);
|
96
|
-
} else {
|
97
|
-
// sticky is started but it have to be repositioned
|
98
|
-
s.stickyElement.trigger('sticky-update', [s]);
|
99
|
-
}
|
100
|
-
|
101
|
-
if (s.currentTop === s.topSpacing && s.currentTop > newTop || s.currentTop === null && newTop < s.topSpacing) {
|
102
|
-
// just reached bottom || just started to stick but bottom is already reached
|
103
|
-
s.stickyElement.trigger('sticky-bottom-reached', [s]);
|
104
|
-
} else if(s.currentTop !== null && newTop === s.topSpacing && s.currentTop < newTop) {
|
105
|
-
// sticky is started && sticked at topSpacing && overflowing from top just finished
|
106
|
-
s.stickyElement.trigger('sticky-bottom-unreached', [s]);
|
107
|
-
}
|
108
|
-
|
109
|
-
s.currentTop = newTop;
|
110
|
-
}
|
111
|
-
|
112
|
-
// Check if sticky has reached end of container and stop sticking
|
113
|
-
var stickyWrapperContainer = s.stickyWrapper.parent();
|
114
|
-
var unstick = (s.stickyElement.offset().top + s.stickyElement.outerHeight() >= stickyWrapperContainer.offset().top + stickyWrapperContainer.outerHeight()) && (s.stickyElement.offset().top <= s.topSpacing);
|
115
|
-
|
116
|
-
if( unstick ) {
|
117
|
-
s.stickyElement
|
118
|
-
.css('position', 'absolute')
|
119
|
-
.css('top', '')
|
120
|
-
.css('bottom', 0);
|
121
|
-
} else {
|
122
|
-
s.stickyElement
|
123
|
-
.css('position', 'fixed')
|
124
|
-
.css('top', newTop)
|
125
|
-
.css('bottom', '');
|
126
|
-
}
|
127
|
-
}
|
128
|
-
}
|
129
|
-
},
|
130
|
-
resizer = function() {
|
131
|
-
windowHeight = $window.height();
|
11
|
+
}
|
132
12
|
|
133
|
-
|
134
|
-
var s = sticked[i];
|
135
|
-
var newWidth = null;
|
136
|
-
if (s.getWidthFrom) {
|
137
|
-
if (s.responsiveWidth) {
|
138
|
-
newWidth = $(s.getWidthFrom).width();
|
139
|
-
}
|
140
|
-
} else if(s.widthFromWrapper) {
|
141
|
-
newWidth = s.stickyWrapper.width();
|
142
|
-
}
|
143
|
-
if (newWidth != null) {
|
144
|
-
s.stickyElement.css('width', newWidth);
|
145
|
-
}
|
146
|
-
}
|
147
|
-
},
|
148
|
-
methods = {
|
149
|
-
init: function(options) {
|
150
|
-
var o = $.extend({}, defaults, options);
|
151
|
-
return this.each(function() {
|
152
|
-
var stickyElement = $(this);
|
13
|
+
});
|
153
14
|
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
15
|
+
$(window).on('scroll', function() {
|
16
|
+
responsive = $(window).width();
|
17
|
+
if (responsive >= 768) {
|
18
|
+
parallax();
|
19
|
+
}
|
20
|
+
});
|
159
21
|
|
160
|
-
|
22
|
+
function SelectColor(btn) {
|
23
|
+
oldColor = $('.filter-gradient').attr('data-color');
|
24
|
+
newColor = $(btn).attr('data-color');
|
161
25
|
|
162
|
-
|
26
|
+
oldButton = $('a[id^="Demo"]').attr('data-button');
|
27
|
+
newButton = $(btn).attr('data-button');
|
163
28
|
|
164
|
-
|
165
|
-
stickyWrapper.css({width:stickyElement.outerWidth(),marginLeft:"auto",marginRight:"auto"});
|
166
|
-
}
|
29
|
+
$('.filter-gradient').removeClass(oldColor).addClass(newColor).attr('data-color', newColor);
|
167
30
|
|
168
|
-
|
169
|
-
stickyElement.css({"float":"none"}).parent().css({"float":"right"});
|
170
|
-
}
|
31
|
+
$('a[id^="Demo"]').removeClass("btn-" + oldButton).addClass("btn-" + newButton).attr('data-button', newButton);
|
171
32
|
|
172
|
-
|
173
|
-
o.stickyWrapper = stickyWrapper;
|
174
|
-
o.currentTop = null;
|
33
|
+
$('.carousel-indicators').removeClass("carousel-indicators-" + oldColor).addClass("carousel-indicators-" + newColor);
|
175
34
|
|
176
|
-
|
35
|
+
$('.card').removeClass("card-" + oldColor).addClass("card-" + newColor);
|
177
36
|
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
},
|
37
|
+
$('.selector').removeClass('active');
|
38
|
+
$(btn).addClass('active');
|
39
|
+
}
|
182
40
|
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
41
|
+
$('.switch').each(function() {
|
42
|
+
var selector = $(this).parent('li')
|
43
|
+
$(this).click(function() {
|
44
|
+
if (selector.siblings().hasClass('active')) {
|
45
|
+
selector.addClass('active');
|
46
|
+
selector.siblings().removeClass('active');
|
47
|
+
var slide = $(this).attr('data-slide')
|
48
|
+
var lastClass = $('body').attr('class').split(' ').pop();
|
49
|
+
$('body').removeClass(lastClass);
|
50
|
+
$('body').addClass('landing-page' + slide);
|
51
|
+
}
|
52
|
+
});
|
53
|
+
});
|
54
|
+
|
55
|
+
var parallax = debounce(function() {
|
56
|
+
no_of_elements = 0;
|
57
|
+
$('.parallax').each(function() {
|
58
|
+
var $elem = $(this);
|
59
|
+
|
60
|
+
if (isElementInViewport($elem)) {
|
61
|
+
var parent_top = $elem.offset().top;
|
62
|
+
var window_bottom = $(window).scrollTop();
|
63
|
+
var $image = $elem.find('.parallax-background-image')
|
64
|
+
var $oVal = ((window_bottom - parent_top) / 3);
|
65
|
+
$image.css('margin-top', $oVal + 'px');
|
66
|
+
}
|
67
|
+
});
|
68
|
+
}, 6)
|
69
|
+
|
70
|
+
function debounce(func, wait, immediate) {
|
71
|
+
var timeout;
|
72
|
+
return function() {
|
73
|
+
var context = this,
|
74
|
+
args = arguments;
|
75
|
+
clearTimeout(timeout);
|
76
|
+
timeout = setTimeout(function() {
|
77
|
+
timeout = null;
|
78
|
+
if (!immediate) func.apply(context, args);
|
79
|
+
}, wait);
|
80
|
+
if (immediate && !timeout) func.apply(context, args);
|
81
|
+
};
|
82
|
+
};
|
190
83
|
|
191
|
-
setupChangeListeners: function(stickyElement) {
|
192
|
-
if (window.MutationObserver) {
|
193
|
-
var mutationObserver = new window.MutationObserver(function(mutations) {
|
194
|
-
if (mutations[0].addedNodes.length || mutations[0].removedNodes.length) {
|
195
|
-
methods.setWrapperHeight(stickyElement);
|
196
|
-
}
|
197
|
-
});
|
198
|
-
mutationObserver.observe(stickyElement, {subtree: true, childList: true});
|
199
|
-
} else {
|
200
|
-
stickyElement.addEventListener('DOMNodeInserted', function() {
|
201
|
-
methods.setWrapperHeight(stickyElement);
|
202
|
-
}, false);
|
203
|
-
stickyElement.addEventListener('DOMNodeRemoved', function() {
|
204
|
-
methods.setWrapperHeight(stickyElement);
|
205
|
-
}, false);
|
206
|
-
}
|
207
|
-
},
|
208
|
-
update: scroller,
|
209
|
-
unstick: function(options) {
|
210
|
-
return this.each(function() {
|
211
|
-
var that = this;
|
212
|
-
var unstickyElement = $(that);
|
213
84
|
|
214
|
-
|
215
|
-
|
216
|
-
while (i-- > 0) {
|
217
|
-
if (sticked[i].stickyElement.get(0) === that) {
|
218
|
-
splice.call(sticked,i,1);
|
219
|
-
removeIdx = i;
|
220
|
-
}
|
221
|
-
}
|
222
|
-
if(removeIdx !== -1) {
|
223
|
-
unstickyElement.unwrap();
|
224
|
-
unstickyElement
|
225
|
-
.css({
|
226
|
-
'width': '',
|
227
|
-
'position': '',
|
228
|
-
'top': '',
|
229
|
-
'float': ''
|
230
|
-
})
|
231
|
-
;
|
232
|
-
}
|
233
|
-
});
|
234
|
-
}
|
235
|
-
};
|
85
|
+
function isElementInViewport(elem) {
|
86
|
+
var $elem = $(elem);
|
236
87
|
|
237
|
-
//
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
} else if (window.attachEvent) {
|
242
|
-
window.attachEvent('onscroll', scroller);
|
243
|
-
window.attachEvent('onresize', resizer);
|
244
|
-
}
|
88
|
+
// Get the scroll position of the page.
|
89
|
+
var scrollElem = ((navigator.userAgent.toLowerCase().indexOf('webkit') != -1) ? 'body' : 'html');
|
90
|
+
var viewportTop = $(scrollElem).scrollTop();
|
91
|
+
var viewportBottom = viewportTop + $(window).height();
|
245
92
|
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
} else if (typeof method === 'object' || !method ) {
|
250
|
-
return methods.init.apply( this, arguments );
|
251
|
-
} else {
|
252
|
-
$.error('Method ' + method + ' does not exist on jQuery.sticky');
|
253
|
-
}
|
254
|
-
};
|
93
|
+
// Get the position of the element on the page.
|
94
|
+
var elemTop = Math.round($elem.offset().top);
|
95
|
+
var elemBottom = elemTop + $elem.height();
|
255
96
|
|
256
|
-
|
257
|
-
|
258
|
-
return methods[method].apply(this, slice.call(arguments, 1));
|
259
|
-
} else if (typeof method === 'object' || !method ) {
|
260
|
-
return methods.unstick.apply( this, arguments );
|
261
|
-
} else {
|
262
|
-
$.error('Method ' + method + ' does not exist on jQuery.sticky');
|
263
|
-
}
|
264
|
-
};
|
265
|
-
$(function() {
|
266
|
-
setTimeout(scroller, 0);
|
267
|
-
});
|
268
|
-
}));
|
97
|
+
return ((elemTop < viewportBottom) && (elemBottom > viewportTop));
|
98
|
+
}
|