/* * Slides, A Slideshow Plugin for jQuery * Intructions: http://slidesjs.com * By: Nathan Searles, http://nathansearles.com * Version: 1.0.7 * Updated: December 29th, 2010 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ (function($) { $.fn.slides = function(option) { option = $.extend({}, $.fn.slides.option, option); return this .each(function() { $('.' + option.container, $(this)).children().wrapAll( '
'); var elem = $(this), control = $('.slides_control', elem), total = control .children().size(), width = control.children() .outerWidth(), height = control.children() .outerHeight(), start = option.start - 1, effect = option.effect .indexOf(',') < 0 ? option.effect : option.effect .replace(' ', '').split(',')[0], paginationEffect = option.effect .indexOf(',') < 0 ? effect : option.effect.replace( ' ', '').split(',')[1], next = 0, prev = 0, number = 0, current = 0, loaded, active, clicked, position, direction; if (total < 2) { return; } if (start < 0) { start = 0; } ; if (start > total) { start = total - 1; } ; if (option.start) { current = start; } ; if (option.randomize) { control.randomize(); } $('.' + option.container, elem).css({ overflow : 'hidden', position : 'relative' }); control.css({ position : 'relative', width : (width * 3), height : height, left : -width }); control.children().css({ position : 'absolute', top : 0, left : width, zIndex : 0, display : 'none' }); if (option.autoHeight) { control.animate({ height : control.children(':eq(' + start + ')') .outerHeight() }, option.autoHeightSpeed); } if (option.preload && control.children()[0].tagName == 'IMG') { elem.css({ background : 'url(' + option.preloadImage + ') no-repeat 50% 50%' }); var img = $('img:eq(' + start + ')', elem).attr('src') + '?' + (new Date()).getTime(); $('img:eq(' + start + ')', elem).attr('src', img).load( function() { $(this).fadeIn(option.fadeSpeed, function() { $(this).css({ zIndex : 5 }); elem.css({ background : '' }); loaded = true; }); }); } else { control.children(':eq(' + start + ')').fadeIn( option.fadeSpeed, function() { loaded = true; }); } if (option.bigTarget) { control.children().css({ cursor : 'pointer' }); control.children().click(function() { animate('next', effect); return false; }); } if (option.hoverPause && option.play) { control.children().bind('mouseover', function() { stop(); }); control.children().bind('mouseleave', function() { pause(); }); } if (option.generateNextPrev) { $('.' + option.container, elem).after( 'Prev'); $('.' + option.prev, elem).after( 'Next'); } $('.' + option.next, elem).click(function(e) { e.preventDefault(); if (option.play) { pause(); } ; animate('next', effect); }); $('.' + option.prev, elem).click(function(e) { e.preventDefault(); if (option.play) { pause(); } ; animate('prev', effect); }); if (option.generatePagination) { elem.append(''); control.children().each( function() { $('.' + option.paginationClass, elem) .append( '
  • ' + (number + 1) + '
  • '); number++; }); } else { $('.' + option.paginationClass + ' li a', elem).each( function() { $(this).attr('href', '#' + number); number++; }); } $( '.' + option.paginationClass + ' li a[href=#' + start + ']', elem).parent().addClass( 'current'); $('.' + option.paginationClass + ' li a', elem) .click( function() { if (option.play) { pause(); } ; clicked = $(this).attr('href').replace( '#', ''); if (current != clicked) { animate('pagination', paginationEffect, clicked); } return false; }); $('a.link', elem).click(function() { if (option.play) { pause(); } ; clicked = $(this).attr('href').replace('#', '') - 1; if (current != clicked) { animate('pagination', paginationEffect, clicked); } return false; }); if (option.play) { playInterval = setInterval(function() { animate('next', effect); }, option.play); elem.data('interval', playInterval); } ; function stop() { clearInterval(elem.data('interval')); } ; function pause() { if (option.pause) { clearTimeout(elem.data('pause')); clearInterval(elem.data('interval')); pauseTimeout = setTimeout(function() { clearTimeout(elem.data('pause')); playInterval = setInterval(function() { animate("next", effect); }, option.play); elem.data('interval', playInterval); }, option.pause); elem.data('pause', pauseTimeout); } else { stop(); } } ; function animate(direction, effect, clicked) { if (!active && loaded) { active = true; switch (direction) { case 'next': prev = current; next = current + 1; next = total === next ? 0 : next; position = width * 2; direction = -width * 2; current = next; break; case 'prev': prev = current; next = current - 1; next = next === -1 ? total - 1 : next; position = 0; direction = 0; current = next; break; case 'pagination': next = parseInt(clicked, 10); prev = $( '.' + option.paginationClass + ' li.current a', elem).attr( 'href').replace('#', ''); if (next > prev) { position = width * 2; direction = -width * 2; } else { position = 0; direction = 0; } current = next; break; } if (effect === 'fade') { option.animationStart(); if (option.crossfade) { control .children(':eq(' + next + ')', elem) .css({ zIndex : 10 }) .fadeIn( option.fadeSpeed, function() { control.children( ':eq(' + prev + ')', elem).css({ display : 'none', zIndex : 0 }); $(this).css({ zIndex : 0 }); option .animationComplete(next + 1); active = false; }); } else { option.animationStart(); control .children(':eq(' + prev + ')', elem) .fadeOut( option.fadeSpeed, function() { if (option.autoHeight) { control .animate( { height : control .children( ':eq(' + next + ')', elem) .outerHeight() }, option.autoHeightSpeed, function() { control .children( ':eq(' + next + ')', elem) .fadeIn( option.fadeSpeed); }); } else { control .children( ':eq(' + next + ')', elem) .fadeIn( option.fadeSpeed, function() { if ($.browser.msie) { $( this) .get( 0).style .removeAttribute('filter'); } }); } option .animationComplete(next + 1); active = false; }); } } else { control.children(':eq(' + next + ')').css({ left : position, display : 'block' }); if (option.autoHeight) { option.animationStart(); control.animate({ left : direction, height : control.children( ':eq(' + next + ')') .outerHeight() }, option.slideSpeed, function() { control.css({ left : -width }); control.children(':eq(' + next + ')') .css({ left : width, zIndex : 5 }); control.children(':eq(' + prev + ')') .css({ left : width, display : 'none', zIndex : 0 }); option.animationComplete(next + 1); active = false; }); } else { option.animationStart(); control.animate({ left : direction }, option.slideSpeed, function() { control.css({ left : -width }); control.children(':eq(' + next + ')') .css({ left : width, zIndex : 5 }); control.children(':eq(' + prev + ')') .css({ left : width, display : 'none', zIndex : 0 }); option.animationComplete(next + 1); active = false; }); } } if (option.pagination) { $('.' + option.paginationClass + ' li.current', elem).removeClass('current'); $( '.' + option.paginationClass + ' li a[href=#' + next + ']', elem).parent().addClass('current'); } } } ; }); }; $.fn.slides.option = { preload : false, preloadImage : '/img/loading.gif', container : 'slides_container', generateNextPrev : false, next : 'next', prev : 'prev', pagination : true, generatePagination : true, paginationClass : 'pagination', fadeSpeed : 350, slideSpeed : 350, start : 1, effect : 'slide', crossfade : false, randomize : false, play : 0, pause : 0, hoverPause : false, autoHeight : false, autoHeightSpeed : 350, bigTarget : false, animationStart : function() { }, animationComplete : function() { } }; $.fn.randomize = function(callback) { function randomizeOrder() { return (Math.round(Math.random()) - 0.5); } return ($(this).each(function() { var $this = $(this); var $children = $this.children(); var childCount = $children.length; if (childCount > 1) { $children.hide(); var indices = []; for (i = 0; i < childCount; i++) { indices[indices.length] = i; } indices = indices.sort(randomizeOrder); $.each(indices, function(j, k) { var $child = $children.eq(k); var $clone = $child.clone(true); $clone.show().appendTo($this); if (callback !== undefined) { callback($child, $clone); } $child.remove(); }); } })); }; })(jQuery); /** * 登录页调用方法 */ $(function(){ $('#slides').slides({ preload: true, preloadImage: '/images/blue/slideshow/loading.gif', play: 5000, pause: 2500, hoverPause: true, animationStart: function(){ $('.caption').animate({ bottom:-35 },100); }, animationComplete: function(current){ $('.caption').animate({ bottom:0 },200); if (window.console && console.log) { console.log(current); }; } }); });