t/ * * complemento jquery-counter * * Copyright (c) 2009 Martin Conte Mac Donell * Doble licencia bajo las licencias MIT y GPL. * http://docs.jquery.com/License * / jQuery.fn.countdown = función (opciones de usuario) { // Opciones predeterminadas var options = { stepTime: 60, // startTime y formato DEBEN seguir el mismo formato. // tampoco puede especificar un formato desordenado (por ejemplo, hh: ss: mm es incorrecto) formato: "dd: hh: mm: ss", startTime: "01: 12: 32: 55", Imágenes de dígitos: 6, ancho de dígitos: 53, altura de dígitos: 77, timerEnd: function () {}, imagen: "digits.png" }; var dígitos = [], intervalo; // Dibuja dígitos en un contenedor dado var createDigits = función (donde) { var c = 0; // Itere cada dígito de startTime, si no es un dígito // asumiremos que es un separador para (var i = 0; i = 0) { elem = $ ('
'). css ({ height: options.digitHeight * options.digitImages * 10, float: 'izquierda', fondo: 'url (\' '+ opciones.imagen +' \ ')', width: options.digitWidth}); digits.push (elem); margin (c, - ((parseInt (options.startTime [i]) * options.digitHeight * options.digitImages))); dígitos [c] .__ max = 9; // Agregue los dígitos máximos, por ejemplo, el primer dígito de los minutos (mm) tiene // un máximo de 5. El máximo condicional se utiliza cuando el dígito de la izquierda tiene alcance // El máximo. Por ejemplo, el segundo dígito de "horas" tiene un máximo condicional de 4 switch (options.format [i]) { caso 'h': dígitos [c] .__ max = (c% 2 == 0)? 2: 9; si (c% 2 == 0) dígitos [c] .__ condmax = 4; rotura; caso 'd': dígitos [c] .__ max = 9; rotura; caso 'm': casos': dígitos [c] .__ max = (c% 2 == 0)? 5: 9; } ++ c; } demás elem = $ ('
'). css ({float: 'left'}) .text (options.startTime [i]); donde.append (elem) } }; // Establecer u obtener el margen del elemento var margin = function (elem, val) { si (val! == indefinido) devolver dígitos [elem] .css ({'marginTop': val + 'px'}); return parseInt (dígitos [elem] .css ('marginTop'). replace ('px', '')); }; // Hace el movimiento. Esto se hace mediante los pasos de "digitImages". var moveStep = función (elem) { digits [elem] ._ digitInitial = - (digits [elem] .__ max * options.digitHeight * options.digitImages); función de retorno _move () { mtop = margin (elem) + options.digitHeight; if (mtop == options.digitHeight) { margen (elem, dígitos [elem] ._ digitInitial); if (elem> 0) moveStep (elem - 1) (); demás { clearInterval (intervalo); para (var i = 0; i 0) && (dígitos [elem] .__ condmax! == indefinido) && (dígitos [elem - 1] ._ digitInitial == margin (elem - 1))) margin (elem, - (dígitos [elem] .__ condmax * options.digitHeight * options.digitImages)); regreso; } margen (elem, mtop); if (margin (elem) / options.digitHeight% options.digitImages! = 0) setTimeout (_move, options.stepTime); if (mtop == 0) dígitos [elem] .__ ismax = true; } }; $ .extend (opciones, opciones de usuario); this.css ({altura: options.digitHeight, overflow: 'hidden'}); createDigits (esto); intervalo = setInterval (moveStep (digits.length - 1), 1000); };

Comentarios