wp_blog/wp-content/themes/worldwide-v1-01/javascript/marquee.js
2020-01-02 23:15:16 +07:00

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'));
});