Browse Source

Adds option called "manualControls" which allows to write custom markup for pager navigation. "controls" option is renamed to "navContainer". Default speed of the transition is now to 500ms.

pull/126/head
Viljami Salminen 12 years ago
parent
commit
97efefb693
  1. 47
      responsiveslides.js
  2. 16
      responsiveslides.min.js

47
responsiveslides.js

@ -1,4 +1,4 @@
/*! ResponsiveSlides.js v1.51
/*! ResponsiveSlides.js v1.52
* http://responsiveslides.com
* http://viljamis.com
*
@ -14,7 +14,7 @@
// Default settings
var settings = $.extend({
"auto": true, // Boolean: Animate automatically, true or false
"speed": 1000, // Integer: Speed of the transition, in milliseconds
"speed": 500, // Integer: Speed of the transition, in milliseconds
"timeout": 4000, // Integer: Time between slide transitions, in milliseconds
"pager": false, // Boolean: Show pager, true or false
"nav": false, // Boolean: Show navigation, true or false
@ -24,7 +24,8 @@
"prevText": "Previous", // String: Text for the "previous" button
"nextText": "Next", // String: Text for the "next" button
"maxwidth": "", // Integer: Max-width of the slideshow, in pixels
"controls": "", // Selector: Where controls should be appended to, default is after the <ul>
"navContainer": "", // Selector: Where auto generated controls should be appended to, default is after the <ul>
"manualControls": "", // Selector: Declare custom pager navigation
"namespace": "rslides", // String: change the default namespace used
before: function () {}, // Function: Before callback
after: function () {} // Function: After callback
@ -38,7 +39,12 @@
var $this = $(this),
// Local variables
vendor, selectTab, startCycle, restartCycle, rotate, $tabs,
vendor,
selectTab,
startCycle,
restartCycle,
rotate,
$tabs,
// Helpers
index = 0,
@ -173,7 +179,7 @@
}
// Pager
if (true === settings.pager) {
if (settings.pager && !settings.manualControls) {
var tabMarkup = [];
$slide.each(function (i) {
var n = i + 1;
@ -185,23 +191,28 @@
$pager.append(tabMarkup);
// Inject pager
if (options.controls) {
$(settings.controls).append($pager);
if (options.navContainer) {
$(settings.navContainer).append($pager);
} else {
$this.after($pager);
}
} else if(settings.pager) {
// If a selector has been given for the pager element
$pager = $(settings.pager);
}
// Manual pager controls
if (settings.manualControls) {
$pager = $(settings.manualControls);
$pager.addClass(namespace + "_tabs " + namespaceIdx + "_tabs");
}
// Add pager slide class prefixes
if (settings.pager || settings.manualControls) {
$pager.find('li').each(function (i) {
$(this).addClass( slideClassPrefix + (i + 1) );
$(this).addClass(slideClassPrefix + (i + 1));
});
}
// If we have any pager, we need to set up the selectTab function
if (settings.pager) {
// If we have a pager, we need to set up the selectTab function
if (settings.pager || settings.manualControls) {
$tabs = $pager.find('a');
// Select pager item
@ -226,7 +237,7 @@
var idx = index + 1 < length ? index + 1 : 0;
// Remove active state and set new if pager is set
if (settings.pager) {
if (settings.pager || settings.manualControls) {
selectTab(idx);
}
@ -258,7 +269,7 @@
}
// Pager click event handler
if (settings.pager) {
if (settings.pager || settings.manualControls) {
$tabs.bind("click", function (e) {
e.preventDefault();
@ -301,8 +312,8 @@
"<a href='#' class='" + navClass + " next'>" + settings.nextText + "</a>";
// Inject navigation
if (options.controls) {
$(settings.controls).append(navMarkup);
if (options.navContainer) {
$(settings.navContainer).append(navMarkup);
} else {
$this.after(navMarkup);
}
@ -335,7 +346,7 @@
// Go to slide
slideTo($(this)[0] === $prev[0] ? prevIdx : nextIdx);
if (settings.pager) {
if (settings.pager || settings.manualControls) {
selectTab($(this)[0] === $prev[0] ? prevIdx : nextIdx);
}

16
responsiveslides.min.js vendored

@ -1,8 +1,8 @@
/*! http://responsiveslides.com v1.51 by @viljamis */
(function(b,I,A){b.fn.responsiveSlides=function(k){var a=b.extend({auto:!0,speed:1E3,timeout:4E3,pager:!1,nav:!1,random:!1,pause:!1,pauseControls:!0,prevText:"Previous",nextText:"Next",maxwidth:"",controls:"",namespace:"rslides",before:function(){},after:function(){}},k);return this.each(function(){A++;var f=b(this),s,q,t,l,n,p,m=0,e=f.children(),B=e.size(),g=parseFloat(a.speed),C=parseFloat(a.timeout),u=parseFloat(a.maxwidth),d=a.namespace,j=d+A,D=d+"_nav "+j+"_nav",v=d+"_here",h=j+"_on",E=j+"_s",
r=b("<ul class='"+d+"_tabs "+j+"_tabs' />"),w={"float":"left",position:"relative",opacity:1,zIndex:2},x={"float":"none",position:"absolute",opacity:0,zIndex:1},F=function(){var c=(document.body||document.documentElement).style,a="transition";if("string"===typeof c[a])return!0;s=["Moz","Webkit","Khtml","O","ms"];var a=a.charAt(0).toUpperCase()+a.substr(1),b;for(b=0;b<s.length;b++)if("string"===typeof c[s[b]+a])return!0;return!1}(),y=function(c){a.before();F?(e.removeClass(h).css(x).eq(c).addClass(h).css(w),
m=c,setTimeout(function(){a.after()},g)):e.stop().fadeOut(g,function(){b(this).removeClass(h).css(x).css("opacity",1)}).eq(c).fadeIn(g,function(){b(this).addClass(h).css(w);a.after();m=c})};a.random&&(e.sort(function(){return Math.round(Math.random())-0.5}),f.empty().append(e));e.each(function(a){this.id=E+a});f.addClass(d+" "+j);k&&k.maxwidth&&f.css("max-width",u);e.hide().css(x).eq(0).addClass(h).css(w).show();F&&e.show().css({"-webkit-transition":"opacity "+g+"ms ease-in-out","-moz-transition":"opacity "+
g+"ms ease-in-out","-o-transition":"opacity "+g+"ms ease-in-out",transition:"opacity "+g+"ms ease-in-out"});if(1<e.size()){if(C<g+100)return;if(a.pager){var z=[];e.each(function(a){a+=1;z+="<li><a href='#' class='"+E+a+"'>"+a+"</a></li>"});r.append(z);p=r.find("a");k.controls?b(a.controls).append(r):f.after(r);q=function(a){p.closest("li").removeClass(v).eq(a).addClass(v)}}a.auto&&(t=function(){n=setInterval(function(){e.stop(!0,!0);var b=m+1<B?m+1:0;a.pager&&q(b);y(b)},C)},t());l=function(){a.auto&&
(clearInterval(n),t())};a.pause&&f.hover(function(){clearInterval(n)},function(){l()});a.pager&&(p.bind("click",function(c){c.preventDefault();a.pauseControls||l();c=p.index(this);m===c||b("."+h).queue("fx").length||(q(c),y(c))}).eq(0).closest("li").addClass(v),a.pauseControls&&p.hover(function(){clearInterval(n)},function(){l()}));if(a.nav){d="<a href='#' class='"+D+" prev'>"+a.prevText+"</a><a href='#' class='"+D+" next'>"+a.nextText+"</a>";k.controls?b(a.controls).append(d):f.after(d);var d=b("."+
j+"_nav"),G=b("."+j+"_nav.prev");d.bind("click",function(c){c.preventDefault();if(!b("."+h).queue("fx").length){var d=e.index(b("."+h));c=d-1;d=d+1<B?m+1:0;y(b(this)[0]===G[0]?c:d);a.pager&&q(b(this)[0]===G[0]?c:d);a.pauseControls||l()}});a.pauseControls&&d.hover(function(){clearInterval(n)},function(){l()})}}if("undefined"===typeof document.body.style.maxWidth&&k.maxwidth){var H=function(){f.css("width","100%");f.width()>u&&f.css("width",u)};H();b(I).bind("resize",function(){H()})}})}})(jQuery,this,
0);
/*! http://responsiveslides.com v1.52 by @viljamis */
(function(b,I,B){b.fn.responsiveSlides=function(k){var a=b.extend({auto:!0,speed:500,timeout:4E3,pager:!1,nav:!1,random:!1,pause:!1,pauseControls:!0,prevText:"Previous",nextText:"Next",maxwidth:"",navContainer:"",manualControls:"",namespace:"rslides",before:function(){},after:function(){}},k);return this.each(function(){B++;var e=b(this),s,q,t,l,n,p,m=0,c=e.children(),C=c.size(),f=parseFloat(a.speed),D=parseFloat(a.timeout),u=parseFloat(a.maxwidth),d=a.namespace,g=d+B,E=d+"_nav "+g+"_nav",v=d+"_here",
h=g+"_on",w=g+"_s",j=b("<ul class='"+d+"_tabs "+g+"_tabs' />"),x={"float":"left",position:"relative",opacity:1,zIndex:2},y={"float":"none",position:"absolute",opacity:0,zIndex:1},F=function(){var a=(document.body||document.documentElement).style,b="transition";if("string"===typeof a[b])return!0;s=["Moz","Webkit","Khtml","O","ms"];var b=b.charAt(0).toUpperCase()+b.substr(1),c;for(c=0;c<s.length;c++)if("string"===typeof a[s[c]+b])return!0;return!1}(),z=function(r){a.before();F?(c.removeClass(h).css(y).eq(r).addClass(h).css(x),
m=r,setTimeout(function(){a.after()},f)):c.stop().fadeOut(f,function(){b(this).removeClass(h).css(y).css("opacity",1)}).eq(r).fadeIn(f,function(){b(this).addClass(h).css(x);a.after();m=r})};a.random&&(c.sort(function(){return Math.round(Math.random())-0.5}),e.empty().append(c));c.each(function(a){this.id=w+a});e.addClass(d+" "+g);k&&k.maxwidth&&e.css("max-width",u);c.hide().css(y).eq(0).addClass(h).css(x).show();F&&c.show().css({"-webkit-transition":"opacity "+f+"ms ease-in-out","-moz-transition":"opacity "+
f+"ms ease-in-out","-o-transition":"opacity "+f+"ms ease-in-out",transition:"opacity "+f+"ms ease-in-out"});if(1<c.size()){if(D<f+100)return;if(a.pager&&!a.manualControls){var A=[];c.each(function(a){a+=1;A+="<li><a href='#' class='"+w+a+"'>"+a+"</a></li>"});j.append(A);k.navContainer?b(a.navContainer).append(j):e.after(j)}a.manualControls&&(j=b(a.manualControls),j.addClass(d+"_tabs "+g+"_tabs"));(a.pager||a.manualControls)&&j.find("li").each(function(a){b(this).addClass(w+(a+1))});if(a.pager||a.manualControls)p=
j.find("a"),q=function(a){p.closest("li").removeClass(v).eq(a).addClass(v)};a.auto&&(t=function(){n=setInterval(function(){c.stop(!0,!0);var b=m+1<C?m+1:0;(a.pager||a.manualControls)&&q(b);z(b)},D)},t());l=function(){a.auto&&(clearInterval(n),t())};a.pause&&e.hover(function(){clearInterval(n)},function(){l()});if(a.pager||a.manualControls)p.bind("click",function(c){c.preventDefault();a.pauseControls||l();c=p.index(this);m===c||b("."+h).queue("fx").length||(q(c),z(c))}).eq(0).closest("li").addClass(v),
a.pauseControls&&p.hover(function(){clearInterval(n)},function(){l()});if(a.nav){d="<a href='#' class='"+E+" prev'>"+a.prevText+"</a><a href='#' class='"+E+" next'>"+a.nextText+"</a>";k.navContainer?b(a.navContainer).append(d):e.after(d);var d=b("."+g+"_nav"),G=b("."+g+"_nav.prev");d.bind("click",function(d){d.preventDefault();if(!b("."+h).queue("fx").length){var e=c.index(b("."+h));d=e-1;e=e+1<C?m+1:0;z(b(this)[0]===G[0]?d:e);if(a.pager||a.manualControls)q(b(this)[0]===G[0]?d:e);a.pauseControls||
l()}});a.pauseControls&&d.hover(function(){clearInterval(n)},function(){l()})}}if("undefined"===typeof document.body.style.maxWidth&&k.maxwidth){var H=function(){e.css("width","100%");e.width()>u&&e.css("width",u)};H();b(I).bind("resize",function(){H()})}})}})(jQuery,this,0);

Loading…
Cancel
Save