/** * jQuery Simple Slider. This Plugin add a feature slide un UL/LI * list with an image inside, in very simple mode. HTML Tagging required is: * * * * LI title and IMG title are used for show a caption on bottom of slide. * * @REL 1.1.0 you can set timeout params for each single slide. * Thanks to Santino Bivacqua to suggest: * * * * @usage * * $('ul#myslide').simpleSlider(); * * You can set some params like: * * @param alpha (float) Caption opacity (default '0.7'), * @param bgColor (string) Caption background color (default '#000') * @param bgSpeed (int/string) Background image fade speed ( 'slow', 'normal', 'fast' or number of milliseconds) default 'slow' * @param captionSpeed (int/string) Caption slideUp/slideDown speed ( 'slow', 'normal', 'fast' or number of milliseconds) default 'slow' * @param height (string) Caption height (default '50px') * @param titleStyle (object) CSS Object for title ( default { color: '#fff', fontSize: '14px', fontFamily: 'Arial', margin: '0 10px 0 10px', textAlign: 'left' } ) * @param subtitleStyle (object) CSS Object for subtitle (default { color: '#fff', fontSize: '10px', fontFamily: 'Verdana', margin: '0 10px 0 10px', textAlign: 'left' } ) * @param timeOut (number) Milliseconds interval between slide ( default 4000 ) * * @sample * * $('ul#myslide').simpleSlider( {alpha: '0.5', titleStyle: { fontSize: '18px' } } ); * * * "Simple Slider" is released under version 3.0 of the Creative Commons * Attribution-Noncommercial-Share Alike license. This means that it is * absolutely free for personal, noncommercial use provided that you 1) * make attribution to the author and 2) release any derivative work under * the same or a similar license. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * If you wish to use "Simple Slider" for commercial purposes, licensing information * can be found at http://www.undolog.com * * @author Giovambattista Fazioli * @web http://www.undolog.com * @version 1.1.0 * * @changelog * + 1.1.0 Add rel="simpleSlider{}" attribute parameters (thanks to Santino Bivacqua ) * + 1.0.0 First release * * */ (function($){ $.fn.extend( { simpleSlider: function(options){ /** * Set default options */ var defTitleStyle = { color: '#fff', fontSize: '14px', fontFamily: 'Arial', margin: '0 10px 0 10px', textAlign: 'left' }; var defSubtitleStyle = { color: '#fff', fontSize: '10px', fontFamily: 'Verdana', margin: '0 10px 0 10px', textAlign: 'left' }; var defaults = { alpha : '0.7', bgColor : '#000', bgSpeed : 'slow', captionSpeed : 'slow', height : '50px', timeOut : 4000, titleStyle : defTitleStyle, subtitleStyle : defSubtitleStyle }; /** * Merge defaults options with params options */ var options = $.extend(defaults, options); return this.each(function(){ var element = $(this); /** * Get Width and Height of the first image */ var w = element.find('img').eq(0).width(); var h = element.find('img').eq(0).height(); /** * Margin for show caption */ var ms = '-'+options.height; /** * half size of caption */ var hsc = String( parseInt( options.height ) / 2 )+'px'; /** * List of all slide */ var items = []; var index = 0; /** * get speed */ var bgSpeed = isNaN( parseInt( options.bgSpeed ) ) ? options.bgSpeed : parseInt( options.bgSpeed ); var captionSpeed = isNaN( parseInt( options.captionSpeed ) ) ? options.captionSpeed : parseInt( options.captionSpeed ); var start = function() { $( items[ index ] ).fadeIn( bgSpeed, function() { var timeOut = ( $(items[ index ]).data('timeOut') == undefined ) ? parseInt( options.timeOut ) : $(items[ index ]).data('timeOut'); $( items[ index ] ).children('div').animate( { marginTop: ms }, captionSpeed, function() { setTimeout( nextItem, timeOut ); } ); } ); } var nextItem = function() { $( items[ index ] ).children('div').animate( { marginTop: '0' }, captionSpeed, function() { $(this).parent().fadeOut( bgSpeed, start ); } ); index++; if( index > ( items.length-1) ) index = 0; } /** * Avoid ul standard style */ element.css( { listStyle : 'none', padding : '0px', width : w, height : h, overflow : 'hidden' } ) .children('li') .css( { margin : '0', display : 'block', width : w+'px', height : h+'px', overflow : 'hidden' } ) .append( '

' ) .children('div') .css({ position : 'relative', backgroundColor : options.bgColor, opacity : options.alpha, width : w+'px', height : options.height, overflow : 'hidden' }); element.find('li') .each( function(i,e) { /** * + Add $Rel.1.1.0 * Check rel attribute for custom timeout in each single slide */ var r = $(this).attr('rel'); if( r != undefined ) { if( r.indexOf( 'simpleSlider' ) != -1 ) { eval ( 'var o = ' + ( r.substr( r.indexOf( '{' ), ( r.length - 1 ) ) ) ); $(e).data ( 'timeOut', o.timeOut ); } } var t = $(this).attr('title'); var s = $(this).find('img').eq(0).attr('title'); // collection items[ i ] = e; $(e).hide(); $(this).find('h1') .css( defTitleStyle ) .css( options.titleStyle ) .html( t ) .next('p') .css( defSubtitleStyle ) .css( options.subtitleStyle ) .html( s ); } ); start(); // play the game }); } }); })(jQuery);