Muy bien...
Código Javascript
:
Ver original$(document).ready(function() {
$contador = "1";
$tiempo_entre_fases = 7000; // Tiempo de la animacion de la barra
$ancho_total = $('#slider_novedad').css('width'); // Esto son parametros para la animacion
$ancho_por_miniatura = parseInt(parseInt($ancho_total) / parseInt($totalID))-6;
$('div#miniaturas div.opciones').css({"width" : $ancho_por_miniatura+"px"});
$ancho = $('div.opciones').css('width');
$tiepo_por_pixel = $tiempo_entre_fases / parseInt($ancho);
function progresa($contenedor,$ancho_actual,$tiempo_estipulado) {
$tiempo = parseInt(defecto($tiempo_estipulado, $tiempo_entre_fases, false));
$reseteamos = defecto($ancho_actual, 'true', true);
if($reseteamos=="true") {
$('div.barras').stop(true,true);
$('div.barras').css({width:"0px"});
}
$($contenedor).animate(
{width:$ancho},
$tiempo,
function() {
if($contador==$totalID) $contador = "0";
$contador++;
$(".syncmedia div.mediacontainer").scrollTo('#to'+$contador ,800);
progresa('div#opcion'+$contador+' div.barras');
}
);
}
progresa('div#opcion'+$contador+' div.barras');
// Esto hace que al pasar el mouse por encima de la imagen, la animacion se pause
$('.syncmedia').mouseover(function() {
$('div.barras').stop();
});
// Retoma la animacion cuando sacamos el mouse de la imagen
$('.syncmedia').mouseout(function() {
$tiepo_a_esperar = $tiempo_entre_fases-(parseInt($('div#opcion'+$contador+' div.barras').css('width'))*$tiepo_por_pixel);
progresa('div#opcion'+$contador+' div.barras', $('div#opcion'+$contador+' div.barras').css('width'),$tiepo_a_esperar );
});
// Para poder usar el menú de movimiento entre imagenes
$('div.opciones').click(function() {
$('div.barras').stop();
$div_actual = '#'+$(this).attr('id');
$contador = $div_actual.substr($div_actual.length - 1,$div_actual.length);
$(".syncmedia div.mediacontainer").scrollTo('#to'+$contador ,800);
progresa($div_actual + 'div.barras');
});
// Funcion para hacer parametros por defecto
//valor (contiene el valor actual del parámetro), defecto (contiene el valor por defecto)
//quiero_null (especifica si deseamos controlar algo especial, en este caso el valor 'undefined' ,
// posibles valores true o false, por defecto adquiere false)
function defecto($valor, $defecto, $quiero_null){
$quiero_null = $quiero_null || false;
if ($quiero_null){
$valor = (typeof $valor == 'undefined') ? $defecto : $valor;
}else{
$valor = $valor || $defecto;
}
return $valor;
}
});
Código HTML:
<div id="slider_novedad">
<div class="syncmedia">
<div class="mediacontainer">
<a href="link">
<div id="to1" style="background-image: url(imagen)">
<div id="detalles">
<div id="titulo">Titulo</div>
<div id="texto">Texto</div>
</div>
</div>
</a>
</div>
<div class="mediacontainer">
<a href="link">
<div id="to2" style="background-image: url(imagen)">
<div id="detalles">
<div id="titulo">Titulo</div>
<div id="texto">Texto</div>
</div>
</div>
</a>
</div>
</div>
<div id="miniaturas">
<div class="opciones" id="opcion1" class="active" >
<div id="txt">Titulo</div>
<div id="progressbar">
<div class="barras"></div>
</div>
</div>
</div>
</div>
Explico un poco lo que hace.
Dispone de un div para mostrar las imagenes que hace un scrollTo() cada 7000 milisegundos, en esos 7000 milisegundos añado una animacion a una barrita para darle mas apariencia, añadiendo un callback a la funcion jquery de animate();