Código:
Muchas gracias!! /* * loopedSlider 0.5.6 - jQuery plugin * written by Nathan Searles * http://nathansearles.com/loopedslider/ * * Copyright (c) 2009 Nathan Searles (http://nathansearles.com/) * Dual licensed under the MIT (MIT-LICENSE.txt) * and GPL (GPL-LICENSE.txt) licenses. * * Built for jQuery library * http://jquery.com * Compatible with jQuery 1.3.2+ * */ /* * markup example for $("#loopedSlider").loopedSlider(); * * <div id="loopedSlider"> * <div class="container"> * <div class="slides"> * <div><img src="01.jpg" alt="" /></div> * <div><img src="02.jpg" alt="" /></div> * <div><img src="03.jpg" alt="" /></div> * <div><img src="04.jpg" alt="" /></div> * </div> * </div> * <a href="#" class="previous">previous</a> * <a href="#" class="next">next</a> * </div> * */ if(typeof jQuery != 'undefined') { jQuery(function($) { $.fn.extend({ loopedSlider: function(options) { var settings = $.extend({}, $.fn.loopedSlider.defaults, options); return this.each( function() { if($.fn.jquery < '1.3.2') {return;} var $t = $(this); var o = $.metadata ? $.extend({}, settings, $t.metadata()) : settings; var distance = 0; var times = 1; var slides = $(o.slides,$t).children().size(); var width = $(o.slides,$t).children().outerWidth(); var position = 0; var active = false; var number = 0; var interval = 0; var restart = 0; var pagination = $("."+o.pagination+" li a",$t); if(o.addPagination && !$(pagination).length){ var buttons = slides; $($t).append("<ul class="+o.pagination+">"); $(o.slides,$t).children().each(function(){ if (number<buttons) { $("."+o.pagination,$t).append("<li><a rel="+(number+1)+" href=\"#\" >"+(number+1)+"</a></li>"); number = number+1; } else { number = 0; return false; } $("."+o.pagination+" li a:eq(0)",$t).parent().addClass("active"); }); pagination = $("."+o.pagination+" li a",$t); } else { $(pagination,$t).each(function(){ number=number+1; $(this).attr("rel",number); $(pagination.eq(0),$t).parent().addClass("active"); }); } if (slides===1) { $(o.slides,$t).children().css({position:"absolute",left:position,display:"block"}); return; } $(o.slides,$t).css({width:(slides*width)}); $(o.slides,$t).children().each(function(){ $(this).css({position:"absolute",left:position,display:"block"}); position=position+width; }); $(o.slides,$t).children(":eq("+(slides-1)+")").css({position:"absolute",left:-width}); if (slides>3) { $(o.slides,$t).children(":eq("+(slides-1)+")").css({position:"absolute",left:-width}); } if(o.autoHeight){autoHeight(times);} $(".next",$t).click(function(){ if(active===false) { animate("next",true); if(o.autoStart){ if (o.restart) {autoStart();} else {clearInterval(sliderIntervalID);} } } return false; }); $(".previous",$t).click(function(){ if(active===false) { animate("prev",true); if(o.autoStart){ if (o.restart) {autoStart();} else {clearInterval(sliderIntervalID);} } } return false; }); if (o.containerClick) { $(o.container,$t).click(function(){ if(active===false) { animate("next",true); if(o.autoStart){ if (o.restart) {autoStart();} else {clearInterval(sliderIntervalID);} } } return false; }); } $(pagination,$t).click(function(){ if ($(this).parent().hasClass("active")) {return false;} else { times = $(this).attr("rel"); $(pagination,$t).parent().siblings().removeClass("active"); $(this).parent().addClass("active"); animate("fade",times); if(o.autoStart){ if (o.restart) {autoStart();} else {clearInterval(sliderIntervalID);} } } return false; }); if (o.autoStart) { sliderIntervalID = setInterval(function(){ if(active===false) {animate("next",true);} },o.autoStart); function autoStart() { if (o.restart) { clearInterval(sliderIntervalID); clearInterval(interval); clearTimeout(restart); restart = setTimeout(function() { interval = setInterval( function(){ animate("next",true); },o.autoStart); },o.restart); } else { sliderIntervalID = setInterval(function(){ if(active===false) {animate("next",true);} },o.autoStart); } }; } function current(times) { if(times===slides+1){times = 1;} if(times===0){times = slides;} $(pagination,$t).parent().siblings().removeClass("active"); $(pagination+"[rel='" + (times) + "']",$t).parent().addClass("active"); }; function autoHeight(times) { if(times===slides+1){times=1;} if(times===0){times=slides;} var getHeight = $(o.slides,$t).children(":eq("+(times-1)+")",$t).outerHeight(); $(o.container,$t).animate({height: getHeight},o.autoHeight); }; function animate(dir,clicked){ active = true; switch(dir){ case "next": times = times+1; distance = (-(times*width-width)); current(times); if(o.autoHeight){autoHeight(times);} if(slides<3){ if (times===3){$(o.slides,$t).children(":eq(0)").css({left:(slides*width)});} if (times===2){$(o.slides,$t).children(":eq("+(slides-1)+")").css({position:"absolute",left:width});} } $(o.slides,$t).animate({left: distance}, o.slidespeed,function(){ if (times===slides+1) { times = 1; $(o.slides,$t).css({left:0},function(){$(o.slides,$t).animate({left:distance})}); $(o.slides,$t).children(":eq(0)").css({left:0}); $(o.slides,$t).children(":eq("+(slides-1)+")").css({ position:"absolute",left:-width}); } if (times===slides) $(o.slides,$t).children(":eq(0)").css({left:(slides*width)}); if (times===slides-1) $(o.slides,$t).children(":eq("+(slides-1)+")").css({left:(slides*width-width)}); active = false; }); break; case "prev": times = times-1; distance = (-(times*width-width)); current(times); if(o.autoHeight){autoHeight(times);} if (slides<3){ if(times===0){$(o.slides,$t).children(":eq("+(slides-1)+")").css({position:"absolute",left:(-width)});} if(times===1){$(o.slides,$t).children(":eq(0)").css({position:"absolute",left:0});} } $(o.slides,$t).animate({left: distance}, o.slidespeed,function(){ if (times===0) { times = slides; $(o.slides,$t).children(":eq("+(slides-1)+")").css({position:"absolute",left:(slides*width-width)}); $(o.slides,$t).css({left: -(slides*width-width)}); $(o.slides,$t).children(":eq(0)").css({left:(slides*width)}); } if (times===2 ) $(o.slides,$t).children(":eq(0)").css({position:"absolute",left:0}); if (times===1) $(o.slides,$t).children(":eq("+ (slides-1) +")").css({position:"absolute",left:-width}); active = false; }); break; case "fade": times = [times]*1; distance = (-(times*width-width)); current(times); if(o.autoHeight){autoHeight(times);} $(o.slides,$t).children().fadeOut(o.fadespeed, function(){ $(o.slides,$t).css({left: distance}); $(o.slides,$t).children(":eq("+(slides-1)+")").css({left:slides*width-width}); $(o.slides,$t).children(":eq(0)").css({left:0}); if(times===slides){$(o.slides,$t).children(":eq(0)").css({left:(slides*width)});} if(times===1){$(o.slides,$t).children(":eq("+(slides-1)+")").css({ position:"absolute",left:-width});} $(o.slides,$t).children().fadeIn(o.fadespeed); active = false; }); break; default: break; } }; } ); } }); $.fn.loopedSlider.defaults = { container: ".container", //Class/id of main container. You can use "#container" for an id. slides: ".slides", //Class/id of slide container. You can use "#slides" for an id. pagination: "pagination", //Class name of parent ul for numbered links. Don't add a "." here. containerClick: true, //Click slider to goto next slide? true/false autoStart: 0, //Set to positive number for true. This number will be the time between transitions. restart: 0, //Set to positive number for true. Sets time until autoStart is restarted. slidespeed: 300, //Speed of slide animation, 1000 = 1second. fadespeed: 200, //Speed of fade animation, 1000 = 1second. autoHeight: 0, //Set to positive number for true. This number will be the speed of the animation. addPagination: false //Add pagination links based on content? true/false }; }); }