Skip to content

Commit 4abcb22

Browse files
committed
added beforeScroll callback function to options map. fixes kswedberg#16 when using something like .smoothScroll({beforeScroll: function() { this.stop(); }}); new demo provided in demo/stop.html
1 parent a989d8d commit 4abcb22

File tree

3 files changed

+136
-10
lines changed

3 files changed

+136
-10
lines changed

demo/stop.html

Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
<head>
4+
<meta charset="utf-8">
5+
<title>Smooth Scroll jQuery Plugin Demo</title>
6+
<style type="text/css">
7+
.container {
8+
margin: 40px auto;
9+
width: 200px;
10+
}
11+
.scrollme {
12+
height: 100px;
13+
width: 180px;
14+
overflow: auto;
15+
padding-left: 8px;
16+
border: 1px solid #999;
17+
}
18+
.scrollme-x {
19+
width: 400px;
20+
}
21+
.scrollme-x div,
22+
.scrollme-x p {
23+
float: left;
24+
width: 180px;
25+
}
26+
ul.mainnav {
27+
position: fixed;
28+
margin-left: -100px;
29+
}
30+
</style>
31+
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6/jquery.js"></script>
32+
<script>!window.jQuery && document.write(unescape('%3Cscript src="../lib/jquery.js"%3E%3C/script%3E'));</script>
33+
34+
<script src="../jquery.smooth-scroll.js" type="text/javascript"></script>
35+
<script type="text/javascript">
36+
$(document).ready(function() {
37+
$('ul.mainnav a').smoothScroll({
38+
speed: 2000,
39+
beforeScroll: function() {
40+
this.stop();
41+
}
42+
});
43+
44+
$('p.subnav a').click(function(event) {
45+
event.preventDefault();
46+
var link = this;
47+
$.smoothScroll({
48+
scrollTarget: link.hash
49+
});
50+
});
51+
52+
$('button.scrollsomething').click(function() {
53+
$.smoothScroll({
54+
scrollElement: $('div.scrollme'),
55+
scrollTarget: '#findme'
56+
});
57+
return false;
58+
});
59+
$('button.scrollhorz').click(function() {
60+
$.smoothScroll({
61+
direction: 'left',
62+
scrollElement: $('div.scrollme'),
63+
scrollTarget: '.horiz'
64+
});
65+
return false;
66+
});
67+
68+
});
69+
70+
</script>
71+
</head>
72+
<body>
73+
<div class="container">
74+
<p>Scroll the Document to one of the following paragraphs:</p>
75+
<ul class="mainnav">
76+
<li><a href="#p1">p1</a></li>
77+
<li><a href="#p2">p2</a></li>
78+
<li><a href="#p3">p3</a></li>
79+
<li><a href="#p4">p4</a></li>
80+
<li><a href="#p5">p5</a></li>
81+
</ul>
82+
<p>Or, <a href="bbq.html">try it with hashchange support</a></p>
83+
<button class="scrollsomething">Scroll vertically</button>
84+
<button class="scrollhorz">Scroll horizontally</button>
85+
86+
<div class="scrollme">
87+
<div class="scrollme-x">
88+
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
89+
</p>
90+
<div class="horiz">
91+
You found me by scrolling horizontally. nice job!
92+
</div>
93+
</div>
94+
<p>Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
95+
</p>
96+
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
97+
</p>
98+
<p>Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
99+
</p>
100+
<p id="findme">YOU FOUND ME! Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
101+
</p>
102+
<p>Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
103+
</p>
104+
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
105+
</p>
106+
<p>Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
107+
</p>
108+
</div>
109+
110+
<p id="p1">p1 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
111+
<p id="p2">p2 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
112+
<p id="p3">p3 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
113+
<p id="p4">p4 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
114+
<p id="p5">p5 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
115+
<p id="p6">p6 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
116+
<p class="subnav"><a href="#p1">p1</a> <a href="#p2">p2</a> <a href="#p3">p3</a> <a href="#p4">p4</a></p>
117+
118+
</div>
119+
</body>
120+
</html>

jquery.smooth-scroll.js

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/*!
2-
* jQuery Smooth Scroll Plugin v1.4
2+
* jQuery Smooth Scroll Plugin v1.4.1
33
*
4-
* Date: Mon Apr 25 00:02:30 2011 EDT
4+
* Date: Thu Oct 20 17:05:46 2011 EDT
55
* Requires: jQuery v1.3+
66
*
77
* Copyright 2010, Karl Swedberg
@@ -16,7 +16,7 @@
1616

1717
(function($) {
1818

19-
var version = '1.4',
19+
var version = '1.4.1',
2020
defaults = {
2121
exclude: [],
2222
excludeWithin:[],
@@ -25,7 +25,8 @@ var version = '1.4',
2525
scrollElement: null, // jQuery set of elements you wish to scroll (for $.smoothScroll).
2626
// if null (default), $('html, body').firstScrollable() is used.
2727
scrollTarget: null, // only use if you want to override default behavior
28-
afterScroll: null, // function to be called after window is scrolled. "this" is the triggering element
28+
beforeScroll: null, // fn(opts) function to be called before scrolling occurs. "this" is the element(s) being scrolled
29+
afterScroll: null, // fn(opts) function to be called after scrolling occurs. "this" is the triggering element
2930
easing: 'swing',
3031
speed: 400
3132
},
@@ -151,6 +152,10 @@ $.smoothScroll = function(options, px) {
151152

152153
aniprops[scrollDir] = scrollTargetOffset + scrollerOffset + opts.offset;
153154

155+
if ( $.isFunction(opts.beforeScroll) ) {
156+
opts.beforeScroll.call($scroller, opts);
157+
}
158+
154159
$scroller.animate(aniprops,
155160
{
156161
duration: opts.speed,

jquery.smooth-scroll.min.js

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

0 commit comments

Comments
 (0)