Skip to content

Commit 83bef51

Browse files
committed
Added top/bottom notification events
Added events to notify when scrollbar reached top or bottom of the parent container. $(container).bind('slimscroll') can be used to subscribe to events.
1 parent bfe31bc commit 83bef51

File tree

4 files changed

+44
-21
lines changed

4 files changed

+44
-21
lines changed

index.htm

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ <h2>Facebook-like jQuery Scrollbar</h1>
4444
<hr />
4545
<table>
4646
<tr><td valign="top">
47-
<h2>start at the element offsetTop test</h2>
47+
<h2>start at the element offsetTop test & top/bottom events</h2>
4848
<div id="test1a">
4949
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>
5050
<p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>
@@ -54,8 +54,9 @@ <h2>start at the element offsetTop test</h2>
5454
<p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>
5555
<p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>
5656
</div>
57+
<div id="test1aout"></div>
5758
</td><td>
58-
<h2>start at the element offsetTop test (multiple elements)</h2>
59+
<h2>start at the element offsetTop test (multiple elements) & disable fadeOut</h2>
5960
<div id="test1b">
6061
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>
6162
<p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>
@@ -152,11 +153,15 @@ <h2>rail visible test, allowPageScroll true</h2>
152153
height: '200px',
153154
start: $('#testElement'),
154155
alwaysVisible: true
156+
}).bind('slimscroll', function(e, pos){
157+
$('#test1aout').html($('#test1aout').html() + "Reached " + pos + "<br />");
155158
});
159+
156160
$('#test1b').slimScroll({
157161
height: '200px',
158162
width: '400px',
159-
start: $('.blah:eq(1)')
163+
start: $('.blah:eq(1)'),
164+
disableFadeOut: true
160165
});
161166
$('#test2').slimScroll({
162167
position: 'left',

index.min.htm

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ <h2>Facebook-like jQuery Scrollbar</h1>
4444
<hr />
4545
<table>
4646
<tr><td valign="top">
47-
<h2>start at the element offsetTop test</h2>
47+
<h2>start at the element offsetTop test & top/bottom events</h2>
4848
<div id="test1a">
4949
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>
5050
<p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>
@@ -54,8 +54,9 @@ <h2>start at the element offsetTop test</h2>
5454
<p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>
5555
<p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>
5656
</div>
57+
<div id="test1aout"></div>
5758
</td><td>
58-
<h2>start at the element offsetTop test (multiple elements)</h2>
59+
<h2>start at the element offsetTop test (multiple elements) & disable fadeOut</h2>
5960
<div id="test1b">
6061
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>
6162
<p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>
@@ -152,11 +153,15 @@ <h2>rail visible test, allowPageScroll true</h2>
152153
height: '200px',
153154
start: $('#testElement'),
154155
alwaysVisible: true
156+
}).bind('slimscroll', function(e, pos){
157+
$('#test1aout').html($('#test1aout').html() + "Reached " + pos + "<br />");
155158
});
159+
156160
$('#test1b').slimScroll({
157161
height: '200px',
158162
width: '400px',
159-
start: $('.blah:eq(1)')
163+
start: $('.blah:eq(1)'),
164+
disableFadeOut: true
160165
});
161166
$('#test2').slimScroll({
162167
position: 'left',

slimScroll.js

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
* Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
33
* and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
44
*
5-
* Version: 0.5.0
5+
* Version: 0.6.0
66
*
77
*/
88
(function($) {
@@ -32,12 +32,13 @@
3232
scroll: 0
3333
};
3434

35-
var o = ops = $.extend( defaults , options );
35+
var o = ops = $.extend(defaults, options);
3636

3737
// do it for every element that matches selector
3838
this.each(function(){
3939

40-
var isOverPanel, isOverBar, isDragg, queueHide, barHeight, percentScroll,
40+
var isOverPanel, isOverBar, isDragg, queueHide,
41+
barHeight, percentScroll, lastScroll,
4142
divS = '<div></div>',
4243
minBarHeight = 30,
4344
releaseScroll = false,
@@ -80,7 +81,7 @@
8081

8182
// wrap content
8283
var wrapper = $(divS)
83-
.addClass( o.wrapperClass )
84+
.addClass(o.wrapperClass)
8485
.css({
8586
position: 'relative',
8687
overflow: 'hidden',
@@ -97,7 +98,7 @@
9798

9899
// create scrollbar rail
99100
var rail = $(divS)
100-
.addClass( o.railClass )
101+
.addClass(o.railClass)
101102
.css({
102103
width: size,
103104
height: '100%',
@@ -112,7 +113,7 @@
112113

113114
// create scrollbar
114115
var bar = $(divS)
115-
.addClass( o.barClass )
116+
.addClass(o.barClass)
116117
.css({
117118
background: color,
118119
width: size,
@@ -265,8 +266,20 @@
265266
getBarHeight();
266267
clearTimeout(queueHide);
267268

268-
// release wheel when bar reached top or bottom
269-
releaseScroll = allowPageScroll && percentScroll == ~~ percentScroll;
269+
// when bar reached top or bottom
270+
if (percentScroll == ~~ percentScroll)
271+
{
272+
//release wheel
273+
releaseScroll = allowPageScroll;
274+
275+
// publish approporiate event
276+
if (lastScroll != percentScroll)
277+
{
278+
var msg = (~~percentScroll == 0) ? 'top' : 'bottom';
279+
me.trigger('slimscroll', msg);
280+
}
281+
}
282+
lastScroll = percentScroll;
270283

271284
// show only when required
272285
if(barHeight >= me.outerHeight()) {

slimScroll.min.js

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

0 commit comments

Comments
 (0)