From bf702582693dde8519a88a40a9c9c4db7bd3cae0 Mon Sep 17 00:00:00 2001 From: Ariel Flesler Date: Fri, 29 Nov 2013 18:04:23 -0300 Subject: [PATCH 01/18] Bumped to 1.2.3 Changed licensing to MIT --- LICENSE | 22 ++++++++++++++++++++++ Makefile | 2 -- changes.txt | 4 ++++ jquery.serialScroll.js | 18 ++++-------------- jquery.serialScroll.min.js | 6 +++--- package.json | 17 +++++++++++++++++ serialScroll.jquery.json | 29 +++++++++++++++++++++++++++++ 7 files changed, 79 insertions(+), 19 deletions(-) create mode 100644 LICENSE delete mode 100644 Makefile create mode 100644 package.json create mode 100644 serialScroll.jquery.json diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..f6f9c2f --- /dev/null +++ b/LICENSE @@ -0,0 +1,22 @@ +(The MIT License) + +Copyright (c) 2007-2013 Ariel Flesler + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/Makefile b/Makefile deleted file mode 100644 index a11191f..0000000 --- a/Makefile +++ /dev/null @@ -1,2 +0,0 @@ -VER=1.2.2 -include ../common-scrollTo.mak \ No newline at end of file diff --git a/changes.txt b/changes.txt index 279e0ab..eacf723 100644 --- a/changes.txt +++ b/changes.txt @@ -1,9 +1,13 @@ +1.2.3 [Enhancement] - Removed a redundant code - If there's no matched container ('target') serialScroll just ignores the call. - The setting 'interval' implicitely assumes 'force' as true. [Fix] - The setting 'stop' wasn't working on window. +[Misc] +- Changed licensing to MIT +- Repo is compliant with official jquery plugins repository 1.2.2 [Enhancement] diff --git a/jquery.serialScroll.js b/jquery.serialScroll.js index 450683d..7e1982e 100644 --- a/jquery.serialScroll.js +++ b/jquery.serialScroll.js @@ -1,23 +1,13 @@ /*! * jQuery.SerialScroll - * Copyright (c) 2007-2010 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com - * Dual licensed under MIT and GPL. - * Date: 05/31/2010 + * Copyright (c) 2007-2013 Ariel Flesler - afleslergmailcom | http://flesler.blogspot.com + * Licensed under MIT. * * @projectDescription Animated scrolling of series. * @author Ariel Flesler - * @version 1.2.3b + * @version 1.2.3 * - * @id jQuery.serialScroll - * @id jQuery.fn.serialScroll - * @param {Object} settings Hash of settings, it is passed in to jQuery.ScrollTo, none is required. - * @return {jQuery} Returns the same jQuery object, for chaining. - * - * @link {http://flesler.blogspot.com/2008/02/jqueryserialscroll.html Homepage} - * - * Notes: - * - The plugin requires jQuery.ScrollTo. - * - The hash of settings, is passed to jQuery.ScrollTo, so its settings can be used as well. + * http://flesler.blogspot.com/2008/02/jqueryserialscroll.html */ ;(function( $ ){ diff --git a/jquery.serialScroll.min.js b/jquery.serialScroll.min.js index b61f657..533ff14 100644 --- a/jquery.serialScroll.min.js +++ b/jquery.serialScroll.min.js @@ -1,7 +1,7 @@ /** - * Copyright (c) 2007-2010 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com - * Dual licensed under MIT and GPL. + * Copyright (c) 2007-2013 Ariel Flesler - afleslergmailcom | http://flesler.blogspot.com + * Licensed under MIT. * @author Ariel Flesler - * @version 1.2.3b + * @version 1.2.3 */ ;(function($){var f='.serialScroll';var g=$.serialScroll=function(a){return $(window).serialScroll(a)};g.defaults={duration:1000,axis:'x',event:'click',start:0,step:1,lock:true,cycle:true,constant:true};$.fn.serialScroll=function(d){return this.each(function(){var c=$.extend({},g.defaults,d),event=c.event,step=c.step,lazy=c.lazy,context=c.target?this:document,$pane=$(c.target||this,context),pane=$pane[0],items=c.items,active=c.start,auto=c.interval,nav=c.navigation,timer;if(!pane)return;if(!lazy)items=getItems();if(c.force||auto)jump({},active);$(c.prev||[],context).bind(event,-step,move);$(c.next||[],context).bind(event,step,move);if(!pane.ssbound)$pane.bind('prev'+f,-step,move).bind('next'+f,step,move).bind('goto'+f,jump);if(auto)$pane.bind('start'+f,function(e){if(!auto){clear();auto=true;next()}}).bind('stop'+f,function(){clear();auto=false});$pane.bind('notify'+f,function(e,a){var i=index(a);if(i>-1)active=i});pane.ssbound=true;if(c.jump)(lazy?$pane:getItems()).bind(event,function(e){jump(e,index(e.target))});if(nav)nav=$(nav,context).bind(event,function(e){e.data=Math.round(getItems().length/nav.length)*nav.index(this);jump(e,this)});function move(e){e.data+=active;jump(e,this)};function jump(e,a){if(isNaN(a))a=e.data;var n,real=e.type,$items=c.exclude?getItems().slice(0,-c.exclude):getItems(),limit=$items.length-1,elem=$items[a],duration=c.duration;if(real)e.preventDefault();if(auto){clear();timer=setTimeout(next,c.interval)}if(!elem){n=a<0?0:limit;if(active!==n)a=n;else if(!c.cycle)return;else a=limit-n;elem=$items[a]}if(!elem||c.lock&&$pane._scrollable().is(':animated')||real&&c.onBefore&&c.onBefore(e,elem,$pane,getItems(),a)===false)return;if(c.stop)$pane._scrollable().stop(true);if(c.constant)duration=Math.abs(duration/step*(active-a));$pane.scrollTo(elem,duration,c);trigger('notify',a)};function next(){trigger('next')};function clear(){clearTimeout(timer)};function getItems(){return $(items,pane)};function trigger(a){$pane.trigger(a+f,[].slice.call(arguments,1))}function index(a){if(!isNaN(a))return a;var b=getItems(),i;while((i=b.index(a))===-1&&a!==pane)a=a.parentNode;return i}})}})(jQuery); \ No newline at end of file diff --git a/package.json b/package.json new file mode 100644 index 0000000..a016f8e --- /dev/null +++ b/package.json @@ -0,0 +1,17 @@ +{ + "name": "jquery.serialScroll", + "version": "1.2.3", + "description": "Animated scrolling of series.", + "homepage": "https://github.com/flesler/jquery.serialScroll", + "main": [ + "./jquery.serialScroll.js" + ], + "dependencies": { + "jquery": ">=1.8" + }, + "keywords": [ "slideshow", "sequence", "animated", "animation", "scrolling", "scroll", "prev", "next" ], + "author": { + "name": "Ariel Flesler", + "web": "http://flesler.blogspot.com/" + } +} diff --git a/serialScroll.jquery.json b/serialScroll.jquery.json new file mode 100644 index 0000000..489214d --- /dev/null +++ b/serialScroll.jquery.json @@ -0,0 +1,29 @@ +{ + "name": "serialScroll", + "title": "Ariel Flesler's jQuery serialScroll", + "description": "Easy element scrolling using jQuery.", + "keywords": ["slideshow", "sequence", "animated", "animation", "scrolling", "scroll", "prev", "next"], + "version": "1.2.3", + "author": { + "name": "Ariel Flesler", + "email": "aflesler@gmail.com", + "url": "http://flesler.blogspot.com" + }, + "maintainers": [{ + "name": "Ariel Flesler", + "email": "aflesler@gmail.com", + "url": "http://flesler.blogspot.com" + }], + "licenses": [{ + "type": "MIT", + "url": "https://github.com/flesler/jquery.serialScroll/blob/master/LICENSE" + }], + "homepage": "https://github.com/flesler/jquery.serialScroll", + "docs": "https://github.com/flesler/jquery.serialScroll", + "bugs": "https://github.com/flesler/jquery.serialScroll/issues", + "download": "https://github.com/flesler/jquery.serialScroll/releases", + "demo": "http://demos.flesler.com/jquery/serialScroll", + "dependencies": { + "jquery": ">=1.8" + } +} \ No newline at end of file From eeda4fbdce9bcae1f8e418d17762a8dad7b4d852 Mon Sep 17 00:00:00 2001 From: Ariel Flesler Date: Fri, 29 Nov 2013 18:14:07 -0300 Subject: [PATCH 02/18] Updated readme and typo on component.json --- README.md | 4 ++++ component.json | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 976e6e1..3b75e02 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,10 @@ Using [bower](https://github.com/twitter/bower): bower install jquery.serialScroll ``` +### Downloading Manually + +If you want the latest stable version, get the latest release from the [releases page](https://github.com/flesler/jquery.serialScroll/releases). + ### Notes * The plugin requires jQuery.ScrollTo. http://github.com/flesler/jquery.scrollTo diff --git a/component.json b/component.json index c937510..8c3c6e6 100644 --- a/component.json +++ b/component.json @@ -5,7 +5,7 @@ "homepage": "https://github.com/flesler/jquery.serialScroll", "main": [ "./jquery.serialScroll.js", - "./jquery.serialScroll-min.js" + "./jquery.serialScroll.min.js" ], "dependencies": { "jquery" : "~1.8", From 4b201e53ae5a503780fd38806ee22de03d97e50c Mon Sep 17 00:00:00 2001 From: Ariel Flesler Date: Fri, 29 Nov 2013 18:29:12 -0300 Subject: [PATCH 03/18] Updated --- component.json | 15 +++++---------- package.json | 6 ++++-- serialScroll.jquery.json | 5 +++-- 3 files changed, 12 insertions(+), 14 deletions(-) diff --git a/component.json b/component.json index 8c3c6e6..bee8fda 100644 --- a/component.json +++ b/component.json @@ -1,22 +1,17 @@ { "name": "jquery.serialScroll", - "version": "1.2.2", - "description": "This plugin allows you to easily animate any series of elements, by sequentially scrolling them.", + "version": "1.2.3", + "description": "Animated scrolling of series.", "homepage": "https://github.com/flesler/jquery.serialScroll", "main": [ "./jquery.serialScroll.js", "./jquery.serialScroll.min.js" ], "dependencies": { - "jquery" : "~1.8", - "jquery.scrollTo" : "~1.4.3" + "jquery" : ">=1.8", + "jquery.scrollTo" : ">=1.4.3" }, - "keywords": [ - "browser", - "client", - "functional", - "scrolling" - ], + "keywords": [ "slideshow", "sequence", "animated", "animation", "scrolling", "scroll", "prev", "next" ], "author": { "name": "Ariel Flesler", "web": "http://flesler.blogspot.com/" diff --git a/package.json b/package.json index a016f8e..21a2106 100644 --- a/package.json +++ b/package.json @@ -4,10 +4,12 @@ "description": "Animated scrolling of series.", "homepage": "https://github.com/flesler/jquery.serialScroll", "main": [ - "./jquery.serialScroll.js" + "./jquery.serialScroll.js", + "./jquery.serialScroll.min.js" ], "dependencies": { - "jquery": ">=1.8" + "jquery": ">=1.8", + "jquery.scrollTo" : ">=1.4.3" }, "keywords": [ "slideshow", "sequence", "animated", "animation", "scrolling", "scroll", "prev", "next" ], "author": { diff --git a/serialScroll.jquery.json b/serialScroll.jquery.json index 489214d..8306b56 100644 --- a/serialScroll.jquery.json +++ b/serialScroll.jquery.json @@ -1,7 +1,7 @@ { "name": "serialScroll", "title": "Ariel Flesler's jQuery serialScroll", - "description": "Easy element scrolling using jQuery.", + "description": "Animated scrolling of series.", "keywords": ["slideshow", "sequence", "animated", "animation", "scrolling", "scroll", "prev", "next"], "version": "1.2.3", "author": { @@ -24,6 +24,7 @@ "download": "https://github.com/flesler/jquery.serialScroll/releases", "demo": "http://demos.flesler.com/jquery/serialScroll", "dependencies": { - "jquery": ">=1.8" + "jquery": ">=1.8", + "scrollTo": ">=1.4.3" } } \ No newline at end of file From 933cdaff69fff87fe29283cfebf9ee0534d63fb7 Mon Sep 17 00:00:00 2001 From: Ariel Flesler Date: Fri, 29 Nov 2013 18:32:09 -0300 Subject: [PATCH 04/18] Remove package.json --- package.json | 19 ------------------- 1 file changed, 19 deletions(-) delete mode 100644 package.json diff --git a/package.json b/package.json deleted file mode 100644 index 21a2106..0000000 --- a/package.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "name": "jquery.serialScroll", - "version": "1.2.3", - "description": "Animated scrolling of series.", - "homepage": "https://github.com/flesler/jquery.serialScroll", - "main": [ - "./jquery.serialScroll.js", - "./jquery.serialScroll.min.js" - ], - "dependencies": { - "jquery": ">=1.8", - "jquery.scrollTo" : ">=1.4.3" - }, - "keywords": [ "slideshow", "sequence", "animated", "animation", "scrolling", "scroll", "prev", "next" ], - "author": { - "name": "Ariel Flesler", - "web": "http://flesler.blogspot.com/" - } -} From 6095c2110030d29fe259ea2a6db6ba9fa572a6e5 Mon Sep 17 00:00:00 2001 From: Ariel Flesler Date: Fri, 29 Nov 2013 18:36:48 -0300 Subject: [PATCH 05/18] Updated docs link --- serialScroll.jquery.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/serialScroll.jquery.json b/serialScroll.jquery.json index 8306b56..1a83451 100644 --- a/serialScroll.jquery.json +++ b/serialScroll.jquery.json @@ -19,7 +19,7 @@ "url": "https://github.com/flesler/jquery.serialScroll/blob/master/LICENSE" }], "homepage": "https://github.com/flesler/jquery.serialScroll", - "docs": "https://github.com/flesler/jquery.serialScroll", + "docs": "http://flesler.blogspot.com/2008/02/jqueryserialscroll.html", "bugs": "https://github.com/flesler/jquery.serialScroll/issues", "download": "https://github.com/flesler/jquery.serialScroll/releases", "demo": "http://demos.flesler.com/jquery/serialScroll", From 043f1e19327f253d9961dace57891aab5e9b49fa Mon Sep 17 00:00:00 2001 From: Ariel Flesler Date: Fri, 29 Nov 2013 18:37:54 -0300 Subject: [PATCH 06/18] Re-releasing for the jQuery plugins site --- changes.txt | 4 ++++ component.json | 2 +- jquery.serialScroll.js | 2 +- jquery.serialScroll.min.js | 2 +- serialScroll.jquery.json | 2 +- 5 files changed, 8 insertions(+), 4 deletions(-) diff --git a/changes.txt b/changes.txt index eacf723..e19c938 100644 --- a/changes.txt +++ b/changes.txt @@ -1,3 +1,7 @@ +1.2.4 +[Misc] +- Re-releasing for the jQuery plugins site + 1.2.3 [Enhancement] - Removed a redundant code diff --git a/component.json b/component.json index bee8fda..1704a52 100644 --- a/component.json +++ b/component.json @@ -1,6 +1,6 @@ { "name": "jquery.serialScroll", - "version": "1.2.3", + "version": "1.2.4", "description": "Animated scrolling of series.", "homepage": "https://github.com/flesler/jquery.serialScroll", "main": [ diff --git a/jquery.serialScroll.js b/jquery.serialScroll.js index 7e1982e..de69d8a 100644 --- a/jquery.serialScroll.js +++ b/jquery.serialScroll.js @@ -5,7 +5,7 @@ * * @projectDescription Animated scrolling of series. * @author Ariel Flesler - * @version 1.2.3 + * @version 1.2.4 * * http://flesler.blogspot.com/2008/02/jqueryserialscroll.html */ diff --git a/jquery.serialScroll.min.js b/jquery.serialScroll.min.js index 533ff14..195938e 100644 --- a/jquery.serialScroll.min.js +++ b/jquery.serialScroll.min.js @@ -2,6 +2,6 @@ * Copyright (c) 2007-2013 Ariel Flesler - afleslergmailcom | http://flesler.blogspot.com * Licensed under MIT. * @author Ariel Flesler - * @version 1.2.3 + * @version 1.2.4 */ ;(function($){var f='.serialScroll';var g=$.serialScroll=function(a){return $(window).serialScroll(a)};g.defaults={duration:1000,axis:'x',event:'click',start:0,step:1,lock:true,cycle:true,constant:true};$.fn.serialScroll=function(d){return this.each(function(){var c=$.extend({},g.defaults,d),event=c.event,step=c.step,lazy=c.lazy,context=c.target?this:document,$pane=$(c.target||this,context),pane=$pane[0],items=c.items,active=c.start,auto=c.interval,nav=c.navigation,timer;if(!pane)return;if(!lazy)items=getItems();if(c.force||auto)jump({},active);$(c.prev||[],context).bind(event,-step,move);$(c.next||[],context).bind(event,step,move);if(!pane.ssbound)$pane.bind('prev'+f,-step,move).bind('next'+f,step,move).bind('goto'+f,jump);if(auto)$pane.bind('start'+f,function(e){if(!auto){clear();auto=true;next()}}).bind('stop'+f,function(){clear();auto=false});$pane.bind('notify'+f,function(e,a){var i=index(a);if(i>-1)active=i});pane.ssbound=true;if(c.jump)(lazy?$pane:getItems()).bind(event,function(e){jump(e,index(e.target))});if(nav)nav=$(nav,context).bind(event,function(e){e.data=Math.round(getItems().length/nav.length)*nav.index(this);jump(e,this)});function move(e){e.data+=active;jump(e,this)};function jump(e,a){if(isNaN(a))a=e.data;var n,real=e.type,$items=c.exclude?getItems().slice(0,-c.exclude):getItems(),limit=$items.length-1,elem=$items[a],duration=c.duration;if(real)e.preventDefault();if(auto){clear();timer=setTimeout(next,c.interval)}if(!elem){n=a<0?0:limit;if(active!==n)a=n;else if(!c.cycle)return;else a=limit-n;elem=$items[a]}if(!elem||c.lock&&$pane._scrollable().is(':animated')||real&&c.onBefore&&c.onBefore(e,elem,$pane,getItems(),a)===false)return;if(c.stop)$pane._scrollable().stop(true);if(c.constant)duration=Math.abs(duration/step*(active-a));$pane.scrollTo(elem,duration,c);trigger('notify',a)};function next(){trigger('next')};function clear(){clearTimeout(timer)};function getItems(){return $(items,pane)};function trigger(a){$pane.trigger(a+f,[].slice.call(arguments,1))}function index(a){if(!isNaN(a))return a;var b=getItems(),i;while((i=b.index(a))===-1&&a!==pane)a=a.parentNode;return i}})}})(jQuery); \ No newline at end of file diff --git a/serialScroll.jquery.json b/serialScroll.jquery.json index 1a83451..07da084 100644 --- a/serialScroll.jquery.json +++ b/serialScroll.jquery.json @@ -3,7 +3,7 @@ "title": "Ariel Flesler's jQuery serialScroll", "description": "Animated scrolling of series.", "keywords": ["slideshow", "sequence", "animated", "animation", "scrolling", "scroll", "prev", "next"], - "version": "1.2.3", + "version": "1.2.4", "author": { "name": "Ariel Flesler", "email": "aflesler@gmail.com", From e3815472fa05d1699a07fea6c8f9bc6b9989eb70 Mon Sep 17 00:00:00 2001 From: Ariel Flesler Date: Fri, 28 Feb 2014 10:38:30 -0300 Subject: [PATCH 07/18] Using $.isNumeric instead of isNaN --- changes.txt | 4 ++++ jquery.serialScroll.js | 8 ++++---- jquery.serialScroll.min.js | 6 +++--- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/changes.txt b/changes.txt index e19c938..0316ef4 100644 --- a/changes.txt +++ b/changes.txt @@ -1,3 +1,7 @@ +1.2.4.1 +[Misc] +- Using $.isNumeric instead of isNaN + 1.2.4 [Misc] - Re-releasing for the jQuery plugins site diff --git a/jquery.serialScroll.js b/jquery.serialScroll.js index de69d8a..22f769d 100644 --- a/jquery.serialScroll.js +++ b/jquery.serialScroll.js @@ -1,11 +1,11 @@ /*! * jQuery.SerialScroll - * Copyright (c) 2007-2013 Ariel Flesler - afleslergmailcom | http://flesler.blogspot.com + * Copyright (c) 2007-2014 Ariel Flesler - afleslergmailcom | http://flesler.blogspot.com * Licensed under MIT. * * @projectDescription Animated scrolling of series. * @author Ariel Flesler - * @version 1.2.4 + * @version 1.2.4.1 * * http://flesler.blogspot.com/2008/02/jqueryserialscroll.html */ @@ -140,7 +140,7 @@ }; function jump( e, pos ){ - if( isNaN(pos) ) + if( !$.isNumeric(pos) ) pos = e.data; var n, @@ -218,7 +218,7 @@ function index( elem ){ // Already a number - if( !isNaN(elem) ) + if( $.isNumeric(elem) ) return elem; var $items = getItems(), i; diff --git a/jquery.serialScroll.min.js b/jquery.serialScroll.min.js index 195938e..d0829e5 100644 --- a/jquery.serialScroll.min.js +++ b/jquery.serialScroll.min.js @@ -1,7 +1,7 @@ /** - * Copyright (c) 2007-2013 Ariel Flesler - afleslergmailcom | http://flesler.blogspot.com + * Copyright (c) 2007-2014 Ariel Flesler - afleslergmailcom | http://flesler.blogspot.com * Licensed under MIT. * @author Ariel Flesler - * @version 1.2.4 + * @version 1.2.4.1 */ -;(function($){var f='.serialScroll';var g=$.serialScroll=function(a){return $(window).serialScroll(a)};g.defaults={duration:1000,axis:'x',event:'click',start:0,step:1,lock:true,cycle:true,constant:true};$.fn.serialScroll=function(d){return this.each(function(){var c=$.extend({},g.defaults,d),event=c.event,step=c.step,lazy=c.lazy,context=c.target?this:document,$pane=$(c.target||this,context),pane=$pane[0],items=c.items,active=c.start,auto=c.interval,nav=c.navigation,timer;if(!pane)return;if(!lazy)items=getItems();if(c.force||auto)jump({},active);$(c.prev||[],context).bind(event,-step,move);$(c.next||[],context).bind(event,step,move);if(!pane.ssbound)$pane.bind('prev'+f,-step,move).bind('next'+f,step,move).bind('goto'+f,jump);if(auto)$pane.bind('start'+f,function(e){if(!auto){clear();auto=true;next()}}).bind('stop'+f,function(){clear();auto=false});$pane.bind('notify'+f,function(e,a){var i=index(a);if(i>-1)active=i});pane.ssbound=true;if(c.jump)(lazy?$pane:getItems()).bind(event,function(e){jump(e,index(e.target))});if(nav)nav=$(nav,context).bind(event,function(e){e.data=Math.round(getItems().length/nav.length)*nav.index(this);jump(e,this)});function move(e){e.data+=active;jump(e,this)};function jump(e,a){if(isNaN(a))a=e.data;var n,real=e.type,$items=c.exclude?getItems().slice(0,-c.exclude):getItems(),limit=$items.length-1,elem=$items[a],duration=c.duration;if(real)e.preventDefault();if(auto){clear();timer=setTimeout(next,c.interval)}if(!elem){n=a<0?0:limit;if(active!==n)a=n;else if(!c.cycle)return;else a=limit-n;elem=$items[a]}if(!elem||c.lock&&$pane._scrollable().is(':animated')||real&&c.onBefore&&c.onBefore(e,elem,$pane,getItems(),a)===false)return;if(c.stop)$pane._scrollable().stop(true);if(c.constant)duration=Math.abs(duration/step*(active-a));$pane.scrollTo(elem,duration,c);trigger('notify',a)};function next(){trigger('next')};function clear(){clearTimeout(timer)};function getItems(){return $(items,pane)};function trigger(a){$pane.trigger(a+f,[].slice.call(arguments,1))}function index(a){if(!isNaN(a))return a;var b=getItems(),i;while((i=b.index(a))===-1&&a!==pane)a=a.parentNode;return i}})}})(jQuery); \ No newline at end of file +;(function($){var f='.serialScroll';var g=$.serialScroll=function(a){return $(window).serialScroll(a)};g.defaults={duration:1000,axis:'x',event:'click',start:0,step:1,lock:true,cycle:true,constant:true};$.fn.serialScroll=function(d){return this.each(function(){var c=$.extend({},g.defaults,d),event=c.event,step=c.step,lazy=c.lazy,context=c.target?this:document,$pane=$(c.target||this,context),pane=$pane[0],items=c.items,active=c.start,auto=c.interval,nav=c.navigation,timer;if(!pane)return;if(!lazy)items=getItems();if(c.force||auto)jump({},active);$(c.prev||[],context).bind(event,-step,move);$(c.next||[],context).bind(event,step,move);if(!pane.ssbound)$pane.bind('prev'+f,-step,move).bind('next'+f,step,move).bind('goto'+f,jump);if(auto)$pane.bind('start'+f,function(e){if(!auto){clear();auto=true;next()}}).bind('stop'+f,function(){clear();auto=false});$pane.bind('notify'+f,function(e,a){var i=index(a);if(i>-1)active=i});pane.ssbound=true;if(c.jump)(lazy?$pane:getItems()).bind(event,function(e){jump(e,index(e.target))});if(nav)nav=$(nav,context).bind(event,function(e){e.data=Math.round(getItems().length/nav.length)*nav.index(this);jump(e,this)});function move(e){e.data+=active;jump(e,this)};function jump(e,a){if($.isNumeric(a))a=e.data;var n,real=e.type,$items=c.exclude?getItems().slice(0,-c.exclude):getItems(),limit=$items.length-1,elem=$items[a],duration=c.duration;if(real)e.preventDefault();if(auto){clear();timer=setTimeout(next,c.interval)}if(!elem){n=a<0?0:limit;if(active!==n)a=n;else if(!c.cycle)return;else a=limit-n;elem=$items[a]}if(!elem||c.lock&&$pane._scrollable().is(':animated')||real&&c.onBefore&&c.onBefore(e,elem,$pane,getItems(),a)===false)return;if(c.stop)$pane._scrollable().stop(true);if(c.constant)duration=Math.abs(duration/step*(active-a));$pane.scrollTo(elem,duration,c);trigger('notify',a)};function next(){trigger('next')};function clear(){clearTimeout(timer)};function getItems(){return $(items,pane)};function trigger(a){$pane.trigger(a+f,[].slice.call(arguments,1))}function index(a){if(!$.isNumeric(a))return a;var b=getItems(),i;while((i=b.index(a))===-1&&a!==pane)a=a.parentNode;return i}})}})(jQuery); \ No newline at end of file From f60e3d3aefc72eff2ac1ce2a2ef56d0565e3dbf3 Mon Sep 17 00:00:00 2001 From: Ariel Flesler Date: Sun, 11 Jan 2015 10:20:23 -0300 Subject: [PATCH 08/18] Fixes #12 --- demo/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/demo/index.html b/demo/index.html index 9d295c3..6f26064 100644 --- a/demo/index.html +++ b/demo/index.html @@ -7,7 +7,7 @@ - + - + +``` + ### Downloading Manually If you want the latest stable version, get the latest release from the [releases page](https://github.com/flesler/jquery.serialScroll/releases). From 96a4ee8dbf4cd107bf2ff3a99716ea1f6993beab Mon Sep 17 00:00:00 2001 From: lazyants Date: Sat, 4 Jul 2015 15:29:29 +0200 Subject: [PATCH 12/18] fix name for bower --- bower.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bower.json b/bower.json index 10a0ed6..245d6d9 100644 --- a/bower.json +++ b/bower.json @@ -1,5 +1,5 @@ { - "name": "jquery.serialScroll", + "name": "jquery.serialscroll", "version": "1.3.0", "description": "Animated scrolling of series with jQuery", "homepage": "https://github.com/flesler/jquery.serialScroll", @@ -16,4 +16,4 @@ "name": "Ariel Flesler", "web": "http://flesler.blogspot.com/" } -} \ No newline at end of file +} From eb3c573bee7f0fa60c46c31822f03c2479eb6b6e Mon Sep 17 00:00:00 2001 From: Ariel Flesler Date: Sat, 4 Jul 2015 15:39:32 -0300 Subject: [PATCH 13/18] Release 1.3.1 --- CHANGELOG | 4 ++++ bower.json | 2 +- jquery.serialScroll.js | 2 +- jquery.serialScroll.min.js | 2 +- package.json | 2 +- 5 files changed, 8 insertions(+), 4 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 4e724d3..4bad75e 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,7 @@ +1.3.1 +[Misc] +- Bower name made lower case + 1.3.0 [Compat] - Updated to work with jQuery.scrollTo 2.0 diff --git a/bower.json b/bower.json index 245d6d9..2d343f3 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "jquery.serialscroll", - "version": "1.3.0", + "version": "1.3.1", "description": "Animated scrolling of series with jQuery", "homepage": "https://github.com/flesler/jquery.serialScroll", "main": [ diff --git a/jquery.serialScroll.js b/jquery.serialScroll.js index c1f5ebd..5d0773c 100644 --- a/jquery.serialScroll.js +++ b/jquery.serialScroll.js @@ -4,7 +4,7 @@ * Licensed under MIT. * @projectDescription Animated scrolling of series with jQuery * @author Ariel Flesler - * @version 1.3.0 + * @version 1.3.1 * https://github.com/flesler/jquery.serialScroll */ ;(function($) { diff --git a/jquery.serialScroll.min.js b/jquery.serialScroll.min.js index 83b16d8..be1d22d 100644 --- a/jquery.serialScroll.min.js +++ b/jquery.serialScroll.min.js @@ -2,6 +2,6 @@ * Copyright (c) 2007-2015 Ariel Flesler - afleslergmailcom | http://flesler.blogspot.com * Licensed under MIT. * @author Ariel Flesler - * @version 1.3.0 + * @version 1.3.1 */ ;(function($){var f='.serialScroll';var g=$.serialScroll=function(a){return $(window).serialScroll(a)};g.defaults={duration:1000,axis:'x',event:'click',start:0,step:1,lock:true,cycle:true,constant:true};$.fn.serialScroll=function(d){return this.each(function(){var c=$.extend({},g.defaults,d),event=c.event,step=c.step,lazy=c.lazy,context=c.target?this:document,$pane=$(c.target||this,context),pane=$pane[0],items=c.items,active=c.start,auto=c.interval,nav=c.navigation,timer;delete c.step;delete c.start;if(!pane)return;if(!lazy){items=getItems()}if(c.force||auto){jump({},active)}$(c.prev||[],context).bind(event,-step,move);$(c.next||[],context).bind(event,step,move);if(!pane._bound_){$pane.bind('prev'+f,-step,move).bind('next'+f,step,move).bind('goto'+f,jump)}if(auto){$pane.bind('start'+f,function(e){if(!auto){clear();auto=true;next()}}).bind('stop'+f,function(){clear();auto=false})}$pane.bind('notify'+f,function(e,a){var i=index(a);if(i>-1){active=i}});pane._bound_=true;if(c.jump){(lazy?$pane:getItems()).bind(event,function(e){jump(e,index(e.target))})}if(nav){nav=$(nav,context).bind(event,function(e){e.data=Math.round(getItems().length/nav.length)*nav.index(this);jump(e,this)})}function move(e){e.data+=active;jump(e,this)}function jump(e,a){if(!$.isNumeric(a)){a=e.data}var n,real=e.type,$items=c.exclude?getItems().slice(0,-c.exclude):getItems(),limit=$items.length-1,elem=$items[a],duration=c.duration;if(real)e.preventDefault();if(auto){clear();timer=setTimeout(next,c.interval)}if(!elem){n=a<0?0:limit;if(active!==n){a=n}else if(!c.cycle){return}else{a=limit-n}elem=$items[a]}if(!elem||c.lock&&$pane.is(':animated')||real&&c.onBefore&&c.onBefore(e,elem,$pane,getItems(),a)===false)return;if(c.stop){$pane.stop(true)}if(c.constant){duration=Math.abs(duration/step*(active-a))}$pane.scrollTo(elem,duration,c);trigger('notify',a)}function next(){trigger('next')}function clear(){clearTimeout(timer)}function getItems(){return $(items,pane)}function trigger(a){$pane.trigger(a+f,[].slice.call(arguments,1))}function index(a){if($.isNumeric(a)){return a}var b=getItems(),i;while((i=b.index(a))===-1&&a!==pane){a=a.parentNode}return i}})}})(jQuery); \ No newline at end of file diff --git a/package.json b/package.json index 3753c4e..a7d27bc 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "jquery.serialscroll", - "version": "1.3.0", + "version": "1.3.1", "description": "Animated scrolling of series with jQuery", "main": "jquery.serialScroll.js", "author": { From 31c3595f71c1883d6ca6b316dc9fa980fd5d694f Mon Sep 17 00:00:00 2001 From: Ariel Flesler Date: Fri, 12 Aug 2016 17:42:12 -0300 Subject: [PATCH 14/18] Removed demo --- demo/css/style.css | 235 -------------------------- demo/img/next.gif | Bin 524 -> 0 bytes demo/img/prev.gif | Bin 514 -> 0 bytes demo/index.html | 294 --------------------------------- demo/js/jquery.scrollTo.min.js | 7 - 5 files changed, 536 deletions(-) delete mode 100644 demo/css/style.css delete mode 100644 demo/img/next.gif delete mode 100644 demo/img/prev.gif delete mode 100644 demo/index.html delete mode 100644 demo/js/jquery.scrollTo.min.js diff --git a/demo/css/style.css b/demo/css/style.css deleted file mode 100644 index 6d2e312..0000000 --- a/demo/css/style.css +++ /dev/null @@ -1,235 +0,0 @@ -body{ - padding: 0 5px; - font-family: Verdana, sans-serif; - background-color: #DDD; -} -ul, li, h4, h3, h2, h1, p{ - padding:0; - margin:0; - list-style:none; -} - -.next, .prev{ - cursor:pointer; -} - -#screen{ - position:relative; - height:425px; - width:725px; - margin-top:40px; -} - #screen .next, #screen .prev{ - position:absolute; - top:200px; - } - #screen .prev{ - left:10px; - } - #screen .next{ - right:10px; - } - #navigation{ - width:600px; - text-align:center; - margin-left:62px; - } - #navigation ul{ - margin-left:55px !important; - margin-left:35px; - } - #navigation li{ - float:left; - margin:0 20px; - padding:10px 20px; - background-color:#EEE; - } - #navigation a{ - color:#933; - font-weight:bolder; - text-decoration:none; - } - -#sections{ - overflow:hidden; - background-color:white; - width:600px; - height:369px; - clear:left; - margin-left:62px; -} - - #sections ul{ - width:3660px; - } - - #sections li{ - float:left; - padding:11px 30px; - } - #sections li.fallen{ - margin-top:369px; - } - - #sections p{ - width:550px; - margin:16px 0; - font-size:85%; - line-height:1.4em; - } - - #sections h2{ - color:#993333; - margin:20px 0pt; - } - #sections a{ - color:#777; - font-weight:bolder; - text-decoration:none; - } - -#screen2{ - position:relative; - width:900px; - margin:20px; -} - #screen2 #buttons{ - border:1px solid #777; - margin-bottom:5px; - width:679px; - } - - #screen2 #buttons a{ - margin:10px 10px; - color:#69C; - } - #screen2 .prev{ - float:left; - } - #screen2 .next{ - float:right; - } - -#slideshow{ - overflow:hidden; - width:680px; - border:1px solid #777; -} - - #slideshow ul{ - width:3900px; - padding-left:225px; - } - - #slideshow li{ - float:left; - margin:0 16px; - cursor:pointer; - } - -#news-ticker{ - width:800px; - height:79px; - background-color:white; - overflow:hidden; - margin:20px; -} - #news-ticker h4{ - color:#933; - display:inline; - } - #news-ticker div{ - height:22px; - width:782px; - border:1px black solid; - padding:8px; - margin-top:-1px; - } - #news-ticker div.first{ - margin-top:0; - } - - #news-ticker p{ - font-size:11px; - margin-left: 0 !important; - margin-left: 5px; - display:inline; - } - -#links{ - position:absolute; - right:5px; - border:1px solid #777; - width:210px; - top:15px; - padding:10px; -} - #links h3{ - color:#777; - } - #links ul{ - padding: 8px 0 3px 20px; - } - #links li{ - list-style-type:circle; - } - #links a{ - color:#69C; - } -h1{ - margin:20px 0; - color:#5B739C; -} - h1 strong{ - font-size:13px; - color:#777; - } -.clear{ - clear:both; - width:0; - height:0; -} - -.message{ - background:#EEE; - border:1px solid #999; - color:#333; - font-size:12px; - padding:1px; - height:auto; - padding-left:5px; - line-height:18px; -} -.side{ - position:absolute; - right:5px; - width:210px; - padding:10px; -} - -#general{ - top:160px; -} -#extra{ - top:400px; -} - -.separator{ - width:675px; - clear:both; - margin-left:20px; -} -#ticker-container{ - position:relative; - padding-top:15px; -} - #ticker-container button{ - position:absolute; - right:5px; - } -#add-news{ - top:0px; -} -#shuffle-news{ - top:25px; -} \ No newline at end of file diff --git a/demo/img/next.gif b/demo/img/next.gif deleted file mode 100644 index 983b103faa9aafc3e5fa5eac7bd3e31c567446fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 524 zcmV+n0`vVxNk%w1VJZMM0J8u9JXLo8|No1m#dnagYlNkhuFqn7oLX~~gq^;ewbpBl zty64`dXuzFWrlN%tw33NA^8La6aWDLEC2ui04e}A000F4Foj90y*S$>b?sg_B}E|y zV$ZkN5>hSU=ve!QS?bTb}xK<5$#EFi87Xi_R<4xpF#f7@yL5Q%_>i#!wrXZo4;%y(O=Wa@O<;6@BT!bAJStR9k+Pfh&iT zkCg_4c$5SNoIHJ=nxTw-fS?|6PGNtqteA73r3R)lL~;yttD=*dr3VMTt--aRowTI9 z2FO}8jijZ-%&*4>3kw%sa~_nE&XQ}<>fa3l3L=sU z-oAIjK-FUx@BtHf`m#ZEWJ{gBh7PqQl!$PEv1u2%F#-@rs2Rs|&?J&RZr9n@r6 zuUZ|)>?qi9C6;p4_7oH^8!)RL9J;ZWGMy1Gk);SL7QcjxI%;y!iK!rdZBOutIhAH1 z#c9dvIs7iqnO}s^B7{@88qF?Mz{rragya*?My8k<+ z(@bTCdXuzsjIBUfdjJ3bA^8La6aWtZEC2ui04e}A000F4@X1N5y*TUr2%pNg5#C3H zB6g7GnO^IGYODKFN6ymqd>Ba911!gL#WP1BrTp8jg>JTo0Ij zg=TgW1*4gIIx?h`fS?%$2AyuJW~rXCj2Et>j)av$w0~->76}QtlZ3K0zn@MN3&pRb zyo;!viggvw(67g_TeH^8w-O8G#L>HuU<+zX4)EH!(&~Gv9lI6? zz`l6r=plonES#+q1`nF^mu^fXb`FCXiD+&cEKT6A28y#Gv7fF|)D+;uCV`(kWAzx` zbC}OrKXfRAk-#X@-8gbLKicD|s%AE5C#OXbSd?W2kKI5v>}hluPNiIk*3$U10?dU? zrZ%;NAt}Hhd{&Yz8+E8!VV81d<GwW@xwsPpgx zU`|C0wJ<6 EJEPL=$N&HU diff --git a/demo/index.html b/demo/index.html deleted file mode 100644 index b178232..0000000 --- a/demo/index.html +++ /dev/null @@ -1,294 +0,0 @@ - - - - - jQuery.SerialScroll - - - - - - - - - - - -

jQuery.SerialScroll

-
- prev - -
-
    -
  • -

    Section 1

    -

    Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Suspendisse et turpis sed metus fermentum pellentesque. Vestibulum auctor neque ac nunc elementum malesuada. Praesent non est sed libero vestibulum consectetuer. Sed vehicula. Vivamus quis tellus sit amet erat ultrices luctus. Fusce a ligula. Fusce viverra libero vitae velit. Aenean bibendum nibh non lorem. Suspendisse quis velit. Integer sit amet lacus. Curabitur tristique. Morbi eu lectus. Vestibulum tristique aliquam quam. Sed neque.

    -

    Nulla facilisi. Quisque eleifend libero. Sed eros. Morbi vel leo. Morbi varius tincidunt sem. Nam sodales volutpat velit. Suspendisse potenti. Duis vehicula pede non nisi. Proin elit pede, ultrices non, ultrices quis, vulputate sit amet, magna. Praesent sodales pellentesque justo. Donec blandit, augue id convallis congue, magna libero hendrerit erat, id blandit est lorem a tellus. Vestibulum tincidunt lectus quis metus. Pellentesque placerat lacus in urna.

    -
  • -
  • -

    Section 2

    -

    Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Suspendisse et turpis sed metus fermentum pellentesque. Vestibulum auctor neque ac nunc elementum malesuada. Praesent non est sed libero vestibulum consectetuer. Sed vehicula. Vivamus quis tellus sit amet erat ultrices luctus. Fusce a ligula. Fusce viverra libero vitae velit. Aenean bibendum nibh non lorem. Suspendisse quis velit. Integer sit amet lacus. Curabitur tristique. Morbi eu lectus. Vestibulum tristique aliquam quam. Sed neque.

    -

    Nulla facilisi. Quisque eleifend libero. Sed eros. Morbi vel leo. Morbi varius tincidunt sem. Nam sodales volutpat velit. Suspendisse potenti. Duis vehicula pede non nisi. Proin elit pede, ultrices non, ultrices quis, vulputate sit amet, magna. Praesent sodales pellentesque justo. Donec blandit, augue id convallis congue, magna libero hendrerit erat, id blandit est lorem a tellus. Vestibulum tincidunt lectus quis metus. Pellentesque placerat lacus in urna.

    -
  • -
  • -

    Section 3

    -

    Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Suspendisse et turpis sed metus fermentum pellentesque. Vestibulum auctor neque ac nunc elementum malesuada. Praesent non est sed libero vestibulum consectetuer. Sed vehicula. Vivamus quis tellus sit amet erat ultrices luctus. Fusce a ligula. Fusce viverra libero vitae velit. Aenean bibendum nibh non lorem. Suspendisse quis velit. Integer sit amet lacus. Curabitur tristique. Morbi eu lectus. Vestibulum tristique aliquam quam. Sed neque.

    -

    Nulla facilisi. Quisque eleifend libero. Sed eros. Morbi vel leo. Morbi varius tincidunt sem. Nam sodales volutpat velit. Suspendisse potenti. Duis vehicula pede non nisi. Proin elit pede, ultrices non, ultrices quis, vulputate sit amet, magna. Praesent sodales pellentesque justo. Donec blandit, augue id convallis congue, magna libero hendrerit erat, id blandit est lorem a tellus. Vestibulum tincidunt lectus quis metus. Pellentesque placerat lacus in urna.

    -
  • -
  • -

    Section 4

    -

    Nullam et sem eget massa pellentesque dapibus. Nulla sollicitudin enim quis odio. Quisque ipsum lorem, volutpat eget, condimentum ac, posuere id, risus. Suspendisse tortor metus, aliquet in, varius nec, hendrerit a, libero. Suspendisse iaculis. Fusce commodo urna ut enim. Fusce tempus eros. Phasellus sodales tellus id dolor. Integer sollicitudin, turpis ac interdum condimentum, enim enim tempus metus, sed imperdiet massa diam nec elit. Mauris ante augue, hendrerit non, commodo ac, porttitor eu, turpis.

    -

    In fermentum nibh ut diam. Mauris sagittis, tellus ac molestie fermentum, arcu orci pharetra mi, id vehicula massa leo vel pede. Nullam semper tincidunt lorem. Proin arcu libero, auctor sed, interdum egestas, ullamcorper et, lacus. Donec id lectus eget diam accumsan ullamcorper. Donec at urna et lacus condimentum pellentesque. Phasellus dapibus hendrerit massa. Sed sed ipsum. Quisque venenatis. Donec vel turpis.

    -
  • -
  • -

    Section 5

    -

    Nullam et sem eget massa pellentesque dapibus. Nulla sollicitudin enim quis odio. Quisque ipsum lorem, volutpat eget, condimentum ac, posuere id, risus. Suspendisse tortor metus, aliquet in, varius nec, hendrerit a, libero. Suspendisse iaculis. Fusce commodo urna ut enim. Fusce tempus eros. Phasellus sodales tellus id dolor. Integer sollicitudin, turpis ac interdum condimentum, enim enim tempus metus, sed imperdiet massa diam nec elit. Mauris ante augue, hendrerit non, commodo ac, porttitor eu, turpis.

    -

    In fermentum nibh ut diam. Mauris sagittis, tellus ac molestie fermentum, arcu orci pharetra mi, id vehicula massa leo vel pede. Nullam semper tincidunt lorem. Proin arcu libero, auctor sed, interdum egestas, ullamcorper et, lacus. Donec id lectus eget diam accumsan ullamcorper. Donec at urna et lacus condimentum pellentesque. Phasellus dapibus hendrerit massa.

    -
  • -
-
- next -
- -

- This plugin can be used for navigation purposes. You decide how many to show at a time with CSS.
- The items don't need to be aligned, you can spread them as much as you want, it will always find them :)
- Check jQuery.ScrollTo's demo if you want to create the perfect animation. You can use its settings too! -

- -
-
- - -
-
-
-
    -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
-
-
- -

- You can also build slideshows with it. In this case, I centered the photos and made them clickable.
- I set this one to cycle, try going over the last photo. I'm using a special easing equation.
- You are allowed to interrupt the animation by clicking again. You can't do that in the first one. -

- -
- - - -
-
-

News 1

-

Nullam a leo. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas mollis vestibulum purus, rutrum sed.

-
-
-

News 2

-

Phasellus nunc ipsum, faucibus non, iaculis ac, sagittis malesuada, augue. Aliquam sollicitudin. Cras iaculis lorem sit amet.

-
-
-

News 3

-

Morbi condimentum. Sed id nunc eu arcu aliquet bibendum. Maecenas vestibulum eros fringilla tortor. Nunc purus.

-
-
-

News 4

-

Sed condimentum. Duis orci. Ut odio leo, dapibus pretium, rhoncus a, sodales eu, nibh. Vivamus consectetuer vestibulum.

-
-
-

News 5

-

Pellentesque varius ligula et enim. Nulla ut purus vel magna ullamcorper vestibulum. Aliquam at enim at ligula bibendum.

-
-
-

News 6

-

Suspendisse id quam at lectus placerat dignissim. Praesent nulla urna, rutrum sed. Maecenas vitae libero ac elit.

-
-
-

News 7

-

Etiam aliquet. Nulla consectetuer, nibh ut gravida consectetuer, nisl enim vestibulum nibh. Suspendisse potenti.

-
-
-

News 8

-

Aliquam porta, nisi id aliquam posuere, enim mi bibendum tellus, non venenatis nisi orci at mi. Curabitur placerat.

-
-
-
- -

- It can be used for news tickers as well. The plugin is not restricted to clicks or buttons.
- Here the option 'lazy' is used and it works, click the buttons on the right if you don't trust me :)
- You can also specify an interval for auto scrolling. To stop the animation, use $().stop() on the container. -

- -

- This demo shows 3 different uses of this plugin. It can certainly be used for others purposes as well.
- Note that it can be used with any html. This is not a widget and the examples are just improvised.
- Use "View source" to see the different calls and markup. All the settings are commented. -

- -

- This plugin won't modify your html at all, won't even touch a single style.
- It gives you full control over the markup and the look, that's your part of the job :)
- You can control the animation from outside with the 3 exposed events (prev, next, goto).
- Guess what ? If you manage to show them scrollbars, users with no javascript can still navigate your content! -

- - - - diff --git a/demo/js/jquery.scrollTo.min.js b/demo/js/jquery.scrollTo.min.js deleted file mode 100644 index 0be11d9..0000000 --- a/demo/js/jquery.scrollTo.min.js +++ /dev/null @@ -1,7 +0,0 @@ -/** - * Copyright (c) 2007-2015 Ariel Flesler - afleslergmailcom | http://flesler.blogspot.com - * Licensed under MIT - * @author Ariel Flesler - * @version 2.1.0 - */ -;(function(l){'use strict';l(['jquery'],function($){var k=$.scrollTo=function(a,b,c){return $(window).scrollTo(a,b,c)};k.defaults={axis:'xy',duration:0,limit:true};function isWin(a){return!a.nodeName||$.inArray(a.nodeName.toLowerCase(),['iframe','#document','html','body'])!==-1}$.fn.scrollTo=function(f,g,h){if(typeof g==='object'){h=g;g=0}if(typeof h==='function'){h={onAfter:h}}if(f==='max'){f=9e9}h=$.extend({},k.defaults,h);g=g||h.duration;var j=h.queue&&h.axis.length>1;if(j){g/=2}h.offset=both(h.offset);h.over=both(h.over);return this.each(function(){if(f===null)return;var d=isWin(this),elem=d?this.contentWindow||window:this,$elem=$(elem),targ=f,attr={},toff;switch(typeof targ){case'number':case'string':if(/^([+-]=?)?\d+(\.\d+)?(px|%)?$/.test(targ)){targ=both(targ);break}targ=d?$(targ):$(targ,elem);if(!targ.length)return;case'object':if(targ.is||targ.style){toff=(targ=$(targ)).offset()}}var e=$.isFunction(h.offset)&&h.offset(elem,targ)||h.offset;$.each(h.axis.split(''),function(i,a){var b=a==='x'?'Left':'Top',pos=b.toLowerCase(),key='scroll'+b,prev=$elem[key](),max=k.max(elem,a);if(toff){attr[key]=toff[pos]+(d?0:prev-$elem.offset()[pos]);if(h.margin){attr[key]-=parseInt(targ.css('margin'+b),10)||0;attr[key]-=parseInt(targ.css('border'+b+'Width'),10)||0}attr[key]+=e[pos]||0;if(h.over[pos]){attr[key]+=targ[a==='x'?'width':'height']()*h.over[pos]}}else{var c=targ[pos];attr[key]=c.slice&&c.slice(-1)==='%'?parseFloat(c)/100*max:c}if(h.limit&&/^\d+$/.test(attr[key])){attr[key]=attr[key]<=0?0:Math.min(attr[key],max)}if(!i&&h.axis.length>1){if(prev===attr[key]){attr={}}else if(j){animate(h.onAfterFirst);attr={}}}});animate(h.onAfter);function animate(a){var b=$.extend({},h,{queue:true,duration:g,complete:a&&function(){a.call(elem,targ,h)}});$elem.animate(attr,b)}})};k.max=function(a,b){var c=b==='x'?'Width':'Height',scroll='scroll'+c;if(!isWin(a))return a[scroll]-$(a)[c.toLowerCase()]();var d='client'+c,doc=a.ownerDocument||a.document,html=doc.documentElement,body=doc.body;return Math.max(html[scroll],body[scroll])-Math.min(html[d],body[d])};function both(a){return $.isFunction(a)||$.isPlainObject(a)?a:{top:a,left:a}}$.Tween.propHooks.scrollLeft=$.Tween.propHooks.scrollTop={get:function(t){return $(t.elem)[t.prop]()},set:function(t){var a=this.get(t);if(t.options.interrupt&&t._last&&t._last!==a){return $(t.elem).stop()}var b=Math.round(t.now);if(a!==b){$(t.elem)[t.prop](b);t._last=this.get(t)}}};return k})}(typeof define==='function'&&define.amd?define:function(a,b){'use strict';if(typeof module!=='undefined'&&module.exports){module.exports=b(require('jquery'))}else{b(jQuery)}})); \ No newline at end of file From bd2e40057a31fd58339f783bf109d3a25787b3a6 Mon Sep 17 00:00:00 2001 From: Lukas Drgon Date: Sun, 10 Sep 2017 14:54:23 +0200 Subject: [PATCH 15/18] Update jsDelivr link --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index af41dd1..22ba7fd 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ npm install jquery.serialscroll CDN provided by [jsdelivr](http://www.jsdelivr.com/#!jquery.serialscroll) ```html - + ``` ### Downloading Manually @@ -29,4 +29,4 @@ In order to use jQuery.scrollTo 2.0 you need to update jQuery.localScroll to 1.3 * The hash of settings is passed in to jQuery.scrollTo, so, in addition to jQuery.localScroll's settings, you can use any of jQuery.scrollTo's. Check that plugin's documentation for further information. -* Most of this plugin's defaults, belong to jQuery.scrollTo, check it's demo for an example of each option. \ No newline at end of file +* Most of this plugin's defaults, belong to jQuery.scrollTo, check it's demo for an example of each option. From f6c99277c4756d0d84ed8da6baceff2f6870fc90 Mon Sep 17 00:00:00 2001 From: Ariel Flesler Date: Tue, 16 Feb 2021 16:25:53 -0300 Subject: [PATCH 16/18] Import jQuery.isNumeric since it's deprecated (fixes #17) --- bower.json | 2 +- jquery.serialScroll.js | 41 ++++++++++++++++++++++---------------- jquery.serialScroll.min.js | 2 +- package.json | 2 +- 4 files changed, 27 insertions(+), 20 deletions(-) diff --git a/bower.json b/bower.json index 2d343f3..1a202ce 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "jquery.serialscroll", - "version": "1.3.1", + "version": "1.3.2", "description": "Animated scrolling of series with jQuery", "homepage": "https://github.com/flesler/jquery.serialScroll", "main": [ diff --git a/jquery.serialScroll.js b/jquery.serialScroll.js index 5d0773c..534258f 100644 --- a/jquery.serialScroll.js +++ b/jquery.serialScroll.js @@ -4,7 +4,7 @@ * Licensed under MIT. * @projectDescription Animated scrolling of series with jQuery * @author Ariel Flesler - * @version 1.3.1 + * @version 1.3.2 * https://github.com/flesler/jquery.serialScroll */ ;(function($) { @@ -42,33 +42,40 @@ */ }; + // Brought from jQuery since it's now deprecated + function isNumeric(obj) { + var type = typeof obj; + return (type === 'number' || type === 'string') && + !isNaN(obj - parseFloat(obj)); + } + $.fn.serialScroll = function(options) { return this.each(function() { - var + var settings = $.extend({}, $serialScroll.defaults, options), // this one is just to get shorter code when compressed - event = settings.event, + event = settings.event, // ditto - step = settings.step, + step = settings.step, // ditto - lazy = settings.lazy, + lazy = settings.lazy, // if a target is specified, then everything's relative to 'this'. - context = settings.target ? this : document, + context = settings.target ? this : document, // the element to be scrolled (will carry all the events) $pane = $(settings.target || this, context), // will be reused, save it into a variable - pane = $pane[0], + pane = $pane[0], // will hold a lazy list of elements - items = settings.items, + items = settings.items, // index of the currently selected item - active = settings.start, + active = settings.start, // boolean, do automatic scrolling or not - auto = settings.interval, + auto = settings.interval, // save it now to make the code shorter - nav = settings.navigation, + nav = settings.navigation, // holds the interval id - timer; + timer; // Incompatible with $().animate() delete settings.step; @@ -148,13 +155,13 @@ } function jump(e, pos) { - if (!$.isNumeric(pos)) { + if (!isNumeric(pos)) { pos = e.data; } - var n, + var n, // Is a real event triggering ? - real = e.type, + real = e.type, // Handle a possible exclude $items = settings.exclude ? getItems().slice(0,-settings.exclude) : getItems(), limit = $items.length - 1, @@ -166,7 +173,7 @@ if (auto) { // clear any possible automatic scrolling. clear(); - timer = setTimeout(next, settings.interval); + timer = setTimeout(next, settings.interval); } // exceeded the limits @@ -229,7 +236,7 @@ function index(elem) { // Already a number - if ($.isNumeric(elem)) { + if (isNumeric(elem)) { return elem; } diff --git a/jquery.serialScroll.min.js b/jquery.serialScroll.min.js index be1d22d..253b243 100644 --- a/jquery.serialScroll.min.js +++ b/jquery.serialScroll.min.js @@ -2,6 +2,6 @@ * Copyright (c) 2007-2015 Ariel Flesler - afleslergmailcom | http://flesler.blogspot.com * Licensed under MIT. * @author Ariel Flesler - * @version 1.3.1 + * @version 1.3.2 */ ;(function($){var f='.serialScroll';var g=$.serialScroll=function(a){return $(window).serialScroll(a)};g.defaults={duration:1000,axis:'x',event:'click',start:0,step:1,lock:true,cycle:true,constant:true};$.fn.serialScroll=function(d){return this.each(function(){var c=$.extend({},g.defaults,d),event=c.event,step=c.step,lazy=c.lazy,context=c.target?this:document,$pane=$(c.target||this,context),pane=$pane[0],items=c.items,active=c.start,auto=c.interval,nav=c.navigation,timer;delete c.step;delete c.start;if(!pane)return;if(!lazy){items=getItems()}if(c.force||auto){jump({},active)}$(c.prev||[],context).bind(event,-step,move);$(c.next||[],context).bind(event,step,move);if(!pane._bound_){$pane.bind('prev'+f,-step,move).bind('next'+f,step,move).bind('goto'+f,jump)}if(auto){$pane.bind('start'+f,function(e){if(!auto){clear();auto=true;next()}}).bind('stop'+f,function(){clear();auto=false})}$pane.bind('notify'+f,function(e,a){var i=index(a);if(i>-1){active=i}});pane._bound_=true;if(c.jump){(lazy?$pane:getItems()).bind(event,function(e){jump(e,index(e.target))})}if(nav){nav=$(nav,context).bind(event,function(e){e.data=Math.round(getItems().length/nav.length)*nav.index(this);jump(e,this)})}function move(e){e.data+=active;jump(e,this)}function jump(e,a){if(!$.isNumeric(a)){a=e.data}var n,real=e.type,$items=c.exclude?getItems().slice(0,-c.exclude):getItems(),limit=$items.length-1,elem=$items[a],duration=c.duration;if(real)e.preventDefault();if(auto){clear();timer=setTimeout(next,c.interval)}if(!elem){n=a<0?0:limit;if(active!==n){a=n}else if(!c.cycle){return}else{a=limit-n}elem=$items[a]}if(!elem||c.lock&&$pane.is(':animated')||real&&c.onBefore&&c.onBefore(e,elem,$pane,getItems(),a)===false)return;if(c.stop){$pane.stop(true)}if(c.constant){duration=Math.abs(duration/step*(active-a))}$pane.scrollTo(elem,duration,c);trigger('notify',a)}function next(){trigger('next')}function clear(){clearTimeout(timer)}function getItems(){return $(items,pane)}function trigger(a){$pane.trigger(a+f,[].slice.call(arguments,1))}function index(a){if($.isNumeric(a)){return a}var b=getItems(),i;while((i=b.index(a))===-1&&a!==pane){a=a.parentNode}return i}})}})(jQuery); \ No newline at end of file diff --git a/package.json b/package.json index a7d27bc..516580a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "jquery.serialscroll", - "version": "1.3.1", + "version": "1.3.2", "description": "Animated scrolling of series with jQuery", "main": "jquery.serialScroll.js", "author": { From b128dae71426b9108056453924393ed6719899c5 Mon Sep 17 00:00:00 2001 From: Ariel Flesler Date: Tue, 16 Feb 2021 16:40:55 -0300 Subject: [PATCH 17/18] Switch jQuery.fn.bind to jQuery.fn.on (fixes #16) --- jquery.serialScroll.js | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/jquery.serialScroll.js b/jquery.serialScroll.js index 534258f..8d843b9 100644 --- a/jquery.serialScroll.js +++ b/jquery.serialScroll.js @@ -95,37 +95,37 @@ } // Button binding, optional - $(settings.prev||[], context).bind(event, -step, move); - $(settings.next||[], context).bind(event, step, move); + $(settings.prev||[], context).on(event, -step, move); + $(settings.next||[], context).on(event, step, move); // Custom events bound to the container if (!pane._bound_) { $pane // You can trigger with just 'prev' - .bind('prev'+NAMESPACE, -step, move) + .on('prev'+NAMESPACE, -step, move) // f.e: $(container).trigger('next'); - .bind('next'+NAMESPACE, step, move) + .on('next'+NAMESPACE, step, move) // f.e: $(container).trigger('goto', 4); - .bind('goto'+NAMESPACE, jump); + .on('goto'+NAMESPACE, jump); } if (auto) { $pane - .bind('start'+NAMESPACE, function(e) { + .on('start'+NAMESPACE, function(e) { if (!auto) { clear(); auto = true; next(); } }) - .bind('stop'+NAMESPACE, function() { + .on('stop'+NAMESPACE, function() { clear(); auto = false; }); } // Let serialScroll know that the index changed externally - $pane.bind('notify'+NAMESPACE, function(e, elem) { + $pane.on('notify'+NAMESPACE, function(e, elem) { var i = index(elem); if (i > -1) { active = i; @@ -137,13 +137,13 @@ // Can't use jump if using lazy items and a non-bubbling event if (settings.jump) { - (lazy ? $pane : getItems()).bind(event, function(e) { + (lazy ? $pane : getItems()).on(event, function(e) { jump(e, index(e.target)); }); } if (nav) { - nav = $(nav, context).bind(event, function(e) { + nav = $(nav, context).on(event, function(e) { e.data = Math.round(getItems().length / nav.length) * nav.index(this); jump(e, this); }); From b79af083df46b832e84e773cbb293f2c54c3f496 Mon Sep 17 00:00:00 2001 From: Ariel Flesler Date: Tue, 16 Feb 2021 16:41:13 -0300 Subject: [PATCH 18/18] v1.3.2 --- CHANGELOG | 5 +++++ LICENSE | 2 +- README.md | 2 +- bower.json | 2 +- jquery.serialScroll.js | 2 +- jquery.serialScroll.min.js | 4 ++-- package.json | 4 ++-- 7 files changed, 13 insertions(+), 8 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 4bad75e..981b806 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,8 @@ +1.3.2 +[Misc] +- Import jQuery.isNumeric since it's deprecated (fixes #17) +- Switch jQuery.fn.bind to jQuery.fn.on (fixes #16) + 1.3.1 [Misc] - Bower name made lower case diff --git a/LICENSE b/LICENSE index f6f9c2f..690eee2 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ (The MIT License) -Copyright (c) 2007-2013 Ariel Flesler +Copyright (c) 2007 Ariel Flesler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the diff --git a/README.md b/README.md index 22ba7fd..962a116 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ npm install jquery.serialscroll CDN provided by [jsdelivr](http://www.jsdelivr.com/#!jquery.serialscroll) ```html - + ``` ### Downloading Manually diff --git a/bower.json b/bower.json index 1a202ce..bf81b67 100644 --- a/bower.json +++ b/bower.json @@ -14,6 +14,6 @@ "keywords": [ "slideshow", "sequence", "animated", "animation", "scrolling", "scroll", "prev", "next" ], "author": { "name": "Ariel Flesler", - "web": "http://flesler.blogspot.com/" + "web": "https://github.com/flesler/" } } diff --git a/jquery.serialScroll.js b/jquery.serialScroll.js index 8d843b9..a21b469 100644 --- a/jquery.serialScroll.js +++ b/jquery.serialScroll.js @@ -1,6 +1,6 @@ /*! * jQuery.serialScroll - * Copyright (c) 2007-2015 Ariel Flesler - afleslergmailcom | http://flesler.blogspot.com + * Copyright (c) 2007 Ariel Flesler - afleslergmailcom | https://github.com/flesler * Licensed under MIT. * @projectDescription Animated scrolling of series with jQuery * @author Ariel Flesler diff --git a/jquery.serialScroll.min.js b/jquery.serialScroll.min.js index 253b243..f085c4c 100644 --- a/jquery.serialScroll.min.js +++ b/jquery.serialScroll.min.js @@ -1,7 +1,7 @@ /** - * Copyright (c) 2007-2015 Ariel Flesler - afleslergmailcom | http://flesler.blogspot.com + * Copyright (c) 2007 Ariel Flesler - afleslergmailcom | https://github.com/flesler * Licensed under MIT. * @author Ariel Flesler * @version 1.3.2 */ -;(function($){var f='.serialScroll';var g=$.serialScroll=function(a){return $(window).serialScroll(a)};g.defaults={duration:1000,axis:'x',event:'click',start:0,step:1,lock:true,cycle:true,constant:true};$.fn.serialScroll=function(d){return this.each(function(){var c=$.extend({},g.defaults,d),event=c.event,step=c.step,lazy=c.lazy,context=c.target?this:document,$pane=$(c.target||this,context),pane=$pane[0],items=c.items,active=c.start,auto=c.interval,nav=c.navigation,timer;delete c.step;delete c.start;if(!pane)return;if(!lazy){items=getItems()}if(c.force||auto){jump({},active)}$(c.prev||[],context).bind(event,-step,move);$(c.next||[],context).bind(event,step,move);if(!pane._bound_){$pane.bind('prev'+f,-step,move).bind('next'+f,step,move).bind('goto'+f,jump)}if(auto){$pane.bind('start'+f,function(e){if(!auto){clear();auto=true;next()}}).bind('stop'+f,function(){clear();auto=false})}$pane.bind('notify'+f,function(e,a){var i=index(a);if(i>-1){active=i}});pane._bound_=true;if(c.jump){(lazy?$pane:getItems()).bind(event,function(e){jump(e,index(e.target))})}if(nav){nav=$(nav,context).bind(event,function(e){e.data=Math.round(getItems().length/nav.length)*nav.index(this);jump(e,this)})}function move(e){e.data+=active;jump(e,this)}function jump(e,a){if(!$.isNumeric(a)){a=e.data}var n,real=e.type,$items=c.exclude?getItems().slice(0,-c.exclude):getItems(),limit=$items.length-1,elem=$items[a],duration=c.duration;if(real)e.preventDefault();if(auto){clear();timer=setTimeout(next,c.interval)}if(!elem){n=a<0?0:limit;if(active!==n){a=n}else if(!c.cycle){return}else{a=limit-n}elem=$items[a]}if(!elem||c.lock&&$pane.is(':animated')||real&&c.onBefore&&c.onBefore(e,elem,$pane,getItems(),a)===false)return;if(c.stop){$pane.stop(true)}if(c.constant){duration=Math.abs(duration/step*(active-a))}$pane.scrollTo(elem,duration,c);trigger('notify',a)}function next(){trigger('next')}function clear(){clearTimeout(timer)}function getItems(){return $(items,pane)}function trigger(a){$pane.trigger(a+f,[].slice.call(arguments,1))}function index(a){if($.isNumeric(a)){return a}var b=getItems(),i;while((i=b.index(a))===-1&&a!==pane){a=a.parentNode}return i}})}})(jQuery); \ No newline at end of file +;(function($){var NAMESPACE='.serialScroll';var $serialScroll=$.serialScroll=function(settings){return $(window).serialScroll(settings)};$serialScroll.defaults={duration:1000,axis:'x',event:'click',start:0,step:1,lock:true,cycle:true,constant:true };function isNumeric(obj){var type=typeof obj;return(type==='number'||type==='string')&&!isNaN(obj-parseFloat(obj))}$.fn.serialScroll=function(options){return this.each(function(){var settings=$.extend({},$serialScroll.defaults,options),event=settings.event,step=settings.step,lazy=settings.lazy,context=settings.target?this:document,$pane=$(settings.target||this,context),pane=$pane[0],items=settings.items,active=settings.start,auto=settings.interval,nav=settings.navigation,timer;delete settings.step;delete settings.start;if(!pane){return}if(!lazy){items=getItems()}if(settings.force||auto){jump({},active)}$(settings.prev||[],context).on(event,-step,move);$(settings.next||[],context).on(event,step,move);if(!pane._bound_){$pane .on('prev'+NAMESPACE,-step,move).on('next'+NAMESPACE,step,move).on('goto'+NAMESPACE,jump)}if(auto){$pane.on('start'+NAMESPACE,function(e){if(!auto){clear();auto=true;next()}}).on('stop'+NAMESPACE,function(){clear();auto=false})}$pane.on('notify'+NAMESPACE,function(e,elem){var i=index(elem);if(i>-1){active=i}});pane._bound_=true;if(settings.jump){(lazy?$pane:getItems()).on(event,function(e){jump(e,index(e.target))})}if(nav){nav=$(nav,context).on(event,function(e){e.data=Math.round(getItems().length/nav.length)*nav.index(this);jump(e,this)})}function move(e){e.data+=active;jump(e,this)}function jump(e,pos){if(!isNumeric(pos)){pos=e.data}var n,real=e.type,$items=settings.exclude?getItems().slice(0,-settings.exclude):getItems(),limit=$items.length-1,elem=$items[pos],duration=settings.duration;if(real){e.preventDefault()}if(auto){clear();timer=setTimeout(next,settings.interval)}if(!elem){n=pos<0?0:limit;if(active!==n){pos=n;}else if(!settings.cycle){return;}else{pos=limit-n}elem=$items[pos]}if(!elem||settings.lock&&$pane.is(':animated')||real&&settings.onBefore&&settings.onBefore(e,elem,$pane,getItems(),pos)===false){return}if(settings.stop){$pane.stop(true)}if(settings.constant){duration=Math.abs(duration/step*(active-pos))}$pane.scrollTo(elem,duration,settings);trigger('notify',pos)}function next(){trigger('next')}function clear(){clearTimeout(timer)}function getItems(){return $(items,pane)}function trigger(event){$pane.trigger(event+NAMESPACE,[].slice.call(arguments,1))}function index(elem){if(isNumeric(elem)){return elem}var $items=getItems(),i;while((i=$items.index(elem))===-1&&elem!==pane){elem=elem.parentNode}return i}})}})(jQuery); \ No newline at end of file diff --git a/package.json b/package.json index 516580a..f6704f4 100644 --- a/package.json +++ b/package.json @@ -5,11 +5,11 @@ "main": "jquery.serialScroll.js", "author": { "name": "Ariel Flesler", - "url": "http://flesler.blogspot.com" + "url": "https://github.com/flesler" }, "licenses": "MIT", "homepage": "https://github.com/flesler/jquery.serialScroll", - "docs": "http://flesler.blogspot.com/2008/02/jqueryserialscroll.html", + "docs": "https://github.com/flesler/2008/02/jqueryserialscroll.html", "bugs": "https://github.com/flesler/jquery.serialScroll/issues", "download": "https://github.com/flesler/jquery.serialScroll/releases", "repository": "git://github.com/flesler/jquery.serialScroll",