54 lines
2.3 KiB
JavaScript
54 lines
2.3 KiB
JavaScript
/*
|
|
* Pause jQuery plugin v0.1
|
|
*
|
|
* Copyright 2010 by Tobia Conforto <tobia.conforto@gmail.com>
|
|
*
|
|
* Based on Pause-resume-animation jQuery plugin by Joe Weitzel
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify it
|
|
* under the terms of the GNU General Public License as published by the Free
|
|
* Software Foundation; either version 2 of the License, or(at your option)
|
|
* any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful, but WITHOUT
|
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
|
* more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License along with
|
|
* this program; if not, write to the Free Software Foundation, Inc., 51
|
|
* Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
*/
|
|
(function(){var e=jQuery,f="jQuery.pause",d=1,b=e.fn.animate,a={};function c(){return new Date().getTime()}e.fn.animate=function(k,h,j,i){var g=e.speed(h,j,i);g.complete=g.old;return this.each(function(){if(!this[f]){this[f]=d++}var l=e.extend({},g);b.apply(e(this),[k,e.extend({},l)]);a[this[f]]={run:true,prop:k,opt:l,start:c(),done:0}})};e.fn.pause=function(){return this.each(function(){if(!this[f]){this[f]=d++}var g=a[this[f]];if(g&&g.run){g.done+=c()-g.start;if(g.done>g.opt.duration){delete a[this[f]]}else{e(this).stop();g.run=false}}})};e.fn.resume=function(){return this.each(function(){if(!this[f]){this[f]=d++}var g=a[this[f]];if(g&&!g.run){g.opt.duration-=g.done;g.done=0;g.run=true;g.start=c();b.apply(e(this),[g.prop,e.extend({},g.opt)])}})}})();
|
|
|
|
jQuery(document).ready(function(){
|
|
var marquee = jQuery("#marquee");
|
|
var time_multiplier = 20;
|
|
var current;
|
|
|
|
marquee.hover(function(){
|
|
current.pause();
|
|
}, function(){
|
|
current.resume();
|
|
})
|
|
|
|
var reset = function() {
|
|
current = jQuery(this);
|
|
var item_width = jQuery(this).outerWidth();
|
|
|
|
var time = time_multiplier * jQuery(this).outerWidth();
|
|
jQuery(this).animate({ 'margin-left': -item_width }, time, 'linear', function(){
|
|
var clone_item = jQuery(this).clone();
|
|
clone_item.css({ 'margin-left': '0' });
|
|
marquee.append(clone_item);
|
|
|
|
jQuery(this).remove();
|
|
reset.call(marquee.children().filter(':first'));
|
|
});
|
|
};
|
|
|
|
reset.call(marquee.children().filter(':first'));
|
|
});
|
|
|
|
|