Demo
Comments and Issues
If you have any issues with the plugin then please log them in the issue tracker on github and I'll do my best to help.
Options
jQuery.kinetic
Dave Taylor http://davetayls.me
The MIT License (MIT)
jQuery.kinetic is a simple plugin which adds smooth drag scrolling with
gradual deceleration to containers.
Major new release 2.0 has BREAKING CHANGES
See release history below for details.
Compatibility
This plugin works with jQuery and
Browsers
ie: 7,8,9
firefox: 3.6,4,5
chrome: 13
safari: 5
iOS Safari: 4
Demos
Take a look at a demo on http://davetayls.me/jquery.kinetic.
Options
cursor {string} default: move Specify the cursor to use on the wrapper
slowdown {number} default: 0.9 This option affects the speed at which the scroll slows
x {string} default: true Toggles movement along the x axis
y {string} default: true Toggles movement along the y axis
maxvelocity {number} default: 40 This option puts a cap on speed at which the container
can scroll
throttleFPS {number} default: 60 This adds throttling to the mouse move events to boost
performance when scrolling
triggerHardware {boolean} false This adds css to the wrapper which
will trigger iOS to use hardware acceleration
filterTarget {function(target)} Return false from this function to
prevent capturing the scroll
movingClass {object}
up: {string} default: 'kinetic-moving-up'
down: {string} default: 'kinetic-moving-down'
left: {string} default: 'kinetic-moving-left'
right: {string} default: 'kinetic-moving-right'
deceleratingClass {object}
up: {string} default: 'kinetic-decelerating-up'
down: {string} default: 'kinetic-decelerating-down'
left: {string} default: 'kinetic-decelerating-left'
right: {string} default: 'kinetic-decelerating-right'
Listeners: All listeners are called with:
- this = jQuery object holding the scroll container
- a single settings argument which are all the options and
{ scrollLeft, scrollTop, velocity, velocityY }
moved {function(settings)} A function which is called on every move
stopped {function(settings)} A function which is called once all
movement has stopped
Methods: You can call methods by running the kinetic plugin
on an element which has already been activated.
eg $('#wrapper').kinetic(); // activate
$('#wrapper').kinetic('methodname', options);
start Start movement in the scroll container at a particular velocity.
This velocity will not slow until the end method is called.
The following line scrolls the container left.
$('#wrapper#).kinetic('start', { velocity: -30 });
The following line scrolls the container right.
$('#wrapper#).kinetic('start', { velocity: 30 });
The following line scrolls the container diagonally.
$('#wrapper#).kinetic('start', { velocity: -30, velocityY: -10 });
end Begin slowdown of any scrolling velocity in the container.
$('#wrapper#).kinetic('end');
stop Stop the scrolling immediately
detach Detach listeners and functionality from the wrapper
attach Re-attach listeners and functionality previously detached using
the detach method
Add your own methods
There are some example methods in the extra-methods folder. You can also add your own.
$.Kinetic.prototype.do = function(options){
// this -> instance of Kinetic
// this.settings -> get current settings
// options -> options passed in from call
};
// use the method
$('#elem').kinetic('do', { options });
Hack the core
You can now hook in to the core functionality to make changes.
var _start = $.Kinetic.prototype.start;
$.Kinetic.prototype.start = function(options){
// -> do something
_start.apply(this, arguments);
};
Running the tests
The test suite uses grunt's server and qunit functionality. The tests are being built up
but currently cover the core functionality. This runs all qUnit Html specs in the
/test/specs folder.
grunt
npm install -g gruntinstall devDependencies
npm installfrom the root of the source
Then run from the root of the source
$ grunt
Manual tests
There are manual tests as html files within the /test folder.
Changes
2.0
After several years, this plugin has had a major refactor. Big thanks to (@skovhus) for helping with this rewrite. Here's what has happened.
rewrite of plugin to an OO plugin
BREAKING CHANGES
call methods are now attached to the
$.Kinetic.prototypeand haveslightly different arguments (see docs above)
no more $.kinetic namespace
Kineticconstructor is attached to $.Kinetic$('#wrapper').data('kinetic-settings')has been removed in favour ofinstance = $('#wrapper').data('kinetic'); settings = instance.settings- All events
thiscontext is now the instance ofKinetic. To access the$scrollerwhich was previously the context you can usethis.$el
1.8.2
- fix #34, #28, now will discard any subsequent attempts to bind
.kinetic()
1.8.1
tweak to hardware trigger css (@edmelly)
upgrade to Grunt 0.4
1.8
- add scroll listener to trigger move events (@dennipahmah)
1.7
- add cursor option to change the default
movecursor
1.6.1
- bug fix release for unbinding touch events
1.6
- use bind for touch events to fix issues on android
1.5
added ability to prevent capturing scroll depending on the target
fix for using alongside jQuery UI draggable #14 - thanks @sidoh, @NilsHolmstrom
1.4
added ability to nest containers thanks @cc-lam
added detach/attach methods
added triggerHardware option
1.3
IE bug fixes when dragging images
Adding extensibility for methods by attaching functions to jQuery.
// add the method $.kinetic.callMethods.do = function(settings, options){ // method functionality }; // use the method $('#elem').kinetic('do', { ... });Added stop method
Fix bug with ignored axis triggering animation frames
Notes
The scrollbar plugin is still very much an alpha version.
Comments add yours.





