/** * jQuery Capty - A Caption Plugin - http://wbotelhos.com/capty * --------------------------------------------------------------------------------- * * jQuery Capty is a plugin that creates captions over the images. * * Licensed under The MIT License * * @version 0.2.1 * @since 12.18.2010 * @author Washington Botelho dos Santos * @documentation wbotelhos.com/capty * @twitter twitter.com/wbotelhos * @license opensource.org/licenses/mit-license.php MIT * @package jQuery Plugins * * Usage with default values: * --------------------------------------------------------------------------------- * $('#capty').capty(); * * Super Mario Bros.® * */ ;(function($) { $.fn.capty = function(settings) { var options = $.extend({}, $.fn.capty.defaults, settings); if (this.length == 0) { debug('Selector invalid or missing!'); return; } else if (this.length > 1) { return this.each(function() { $.fn.capty.apply($(this), [settings]); }); } var $this = $(this), name = $this.attr('name'), $caption = $('
'), $elem = $this; if ($this.parent().is('a')) { $elem = $this.parent(); } var $image = $elem.wrap('
').parent(), $wrapper = $image.wrap('
').parent(); $wrapper.css({ height: '320px', overflow: 'hidden', position: 'relative', width: $this.width() }); $caption.css({ height: options.height, opacity: options.opacity, position: 'relative' }) .click(function(evt) { evt.stopPropagation(); }) .appendTo($wrapper); if (name) { var $content = $(name); if ($content.length) { $content.appendTo($caption); } else { $caption.html('Content invalid or missing!'); } } else { $caption.html($this.attr('alt')); } if (options.prefix) { $caption.prepend(options.prefix); } if (options.sufix) { $caption.append(options.sufix); } if (options.animation == 'slide') { $wrapper.hover( function() { $caption.animate({ top: (-1 * options.height) }, { duration: options.speed, queue: false }); }, function() { $caption.animate({ top: 0 }, { duration: options.speed, queue: false }); } ); } else if (options.animation == 'fade') { $caption.css({ opacity: 0, top: (-1 * options.height) + 'px' }); $wrapper.hover( function() { $caption.stop().animate({ opacity: options.opacity }, options.speed); }, function() { $caption.stop().animate({ opacity: 0 }, options.speed); } ); } else if (options.animation == 'fixed') { $caption.css({ top: '-79px' }); if($.browser.msie && $.browser.version <= 7){ $caption.css({ top: '-75px' }); } } else { debug($this.attr('id') + ': invalid animation!'); } return $this; }; function debug(message) { if (window.console && window.console.log) { window.console.log(message); } }; $.fn.capty.defaults = { animation: 'slide', cCaption: 'capty-caption', cImage: 'capty-image', cWrapper: 'capty-wrapper', height: 30, opacity: .7, prefix: '', speed: 200, sufix: '' }; })(jQuery);