<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Codrops &#187; plugin</title>
	<atom:link href="http://tympanus.net/codrops/tag/plugin/feed/" rel="self" type="application/rss+xml" />
	<link>http://tympanus.net/codrops</link>
	<description>Useful resources and inspiration for creative minds</description>
	<lastBuildDate>Mon, 06 Feb 2012 07:30:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Hover and Click Trigger for Circular Elements with jQuery</title>
		<link>http://tympanus.net/codrops/2011/11/22/hover-and-click-trigger-circular-elements/</link>
		<comments>http://tympanus.net/codrops/2011/11/22/hover-and-click-trigger-circular-elements/#comments</comments>
		<pubDate>Tue, 22 Nov 2011 11:55:16 +0000</pubDate>
		<dc:creator>Mary Lou</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[circle]]></category>
		<category><![CDATA[click]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[event]]></category>
		<category><![CDATA[hover]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[plugin]]></category>

		<guid isPermaLink="false">http://tympanus.net/codrops/?p=6504</guid>
		<description><![CDATA[Today we want to share one possible solution to the circle hovering problem. We'll create a plugin that will take care of the 'mouseenter', 'mouseleave' and 'click' events to be triggered only on the circular shape of the element and not its bounding box.]]></description>
			<content:encoded><![CDATA[<p><a href="http://tympanus.net/Development/HoverClickTriggerCircle/" target="_blank"><img src="http://tympanus.net/codrops/wp-content/uploads/2011/11/HoverClickTriggerCircles.jpg" alt="HoverClickTriggerCircles" width="580" height="315" class="aligncenter size-full wp-image-6533" /></a></p>
<p><a class="demo" href="http://tympanus.net/Development/HoverClickTriggerCircle/" >View demo</a> <a class="download" href="http://tympanus.net/Development/HoverClickTriggerCircle/HoverClickTriggerCircle.zip">Download source</a></p>
<p>Applying a :hover pseudo-class to an element is widely known as the classic &#8220;hovering&#8221; over an element on a web page. A problem that arose with the introduction of the border-radius property is the non-realistic triggering of the hover event when entering the bounding box of the element and not just the actual visible area. This becomes extreme when we create a circle by setting the border-radius of a square to 50% (half of its outer width and height). </p>
<p>Today we want to share one possible solution to the circle hovering problem. We&#8217;ll create a plugin that will take care of the &#8216;mouseenter&#8217;, &#8216;mouseleave&#8217; and &#8216;click&#8217; events to be triggered only on the circular shape of the element and not its bounding box.</p>
<p>The image used in the demo is by <a href="http://www.behance.net/AndrewLili">Andrey &#038; Lili</a>. They are licensed under the <a title="Attribution-NonCommercial 3.0 Unported (CC BY-NC 3.0)" href="http://creativecommons.org/licenses/by-nc/3.0/" target="_blank">Attribution-NonCommercial 3.0 Unported (CC BY-NC 3.0) License</a>. </p>
<div id="bsap_1266918" class="bsarocks bsap_af25dfd2f1908889af7a1aa5f4dcbd9e"></div><div style="clear:both;"></div>
<h3>How it works</h3>
<p>In our example, we&#8217;ll be creating a circle with some kind of hover effect. The structure will simply be:</p>
<pre class="brush:xml">
&lt;a href="#" id="circle" class="ec-circle"&gt;
	&lt;h3&gt;Hovered&lt;/h3&gt;
&lt;/a&gt;
</pre>
<p>And the style will be the following:</p>
<pre class="brush:css">
.ec-circle{
	width: 420px;
	height: 420px;
	-webkit-border-radius: 210px;
	-moz-border-radius: 210px;
	border-radius: 50%;
	text-align: center;
	overflow: hidden;
	font-family:'Kelly Slab', Georgia, serif;
	background: #dda994 url(../images/1.jpg) no-repeat center center;
	box-shadow:
		inset 0 0 1px 230px rgba(0,0,0,0.6),
		inset 0 0 0 7px #d5ad94;
	transition: box-shadow 400ms ease-in-out;
	display: block;
	outline: none;
}
</pre>
<p>Now, we will define a class for the hover effect but <strong>not</strong> a dynamic pseudo-class :hover. The idea is to apply this class then with jQuery when we enter the circular area of our element:</p>
<pre class="brush:css">
.ec-circle-hover{
    box-shadow:
		inset 0 0 0 0 rgba(0,0,0,0.6),
		inset 0 0 0 20px #c18167,
		0 0 10px rgba(0,0,0,0.3);
}
</pre>
<p>Only when we have JavaScript disabled, we&#8217;ll add the pseudo-class. This style can be found in the <i>noscript.css</i>:</p>
<pre class="brush:css">
.ec-circle:hover{
    box-shadow:
		inset 0 0 0 0 rgba(0,0,0,0.6),
		inset 0 0 0 20px #c18167,
		0 0 10px rgba(0,0,0,0.3);
}
</pre>
<h3>The JavaScript</h3>
<p>We are going to create a simple plugin that basically &#8220;redefines&#8221; the three events mentioned earlier. We&#8217;ll make the events only applicable on the circular shape:</p>
<pre class="brush:js">
$.CircleEventManager 			= function( options, element ) {

	this.$el			= $( element );

	this._init( options );

};

$.CircleEventManager.defaults 	= {
	onMouseEnter	: function() { return false },
	onMouseLeave	: function() { return false },
	onClick			: function() { return false }
};

$.CircleEventManager.prototype 	= {
	_init 				: function( options ) {

		this.options 		= $.extend( true, {}, $.CircleEventManager.defaults, options );

		// set the default cursor on the element
		this.$el.css( 'cursor', 'default' );

		this._initEvents();

	},
	_initEvents			: function() {

		var _self	= this;

		this.$el.on({
			'mouseenter.circlemouse'	: function( event ) {

				var el	= $(event.target),

						  circleWidth	= el.outerWidth( true ),
						  circleHeight	= el.outerHeight( true ),
						  circleLeft	= el.offset().left,
						  circleTop		= el.offset().top,
						  circlePos		= {
							  x		: circleLeft + circleWidth / 2,
							  y		: circleTop + circleHeight / 2,
							  radius: circleWidth / 2
						  };

				// save cursor type
				var cursor	= 'default';

				if( _self.$el.css('cursor') === 'pointer' || _self.$el.is('a') )
					cursor = 'pointer';

				el.data( 'cursor', cursor );

				el.on( 'mousemove.circlemouse', function( event ) {

					var distance	= Math.sqrt( Math.pow( event.pageX - circlePos.x, 2 ) + Math.pow( event.pageY - circlePos.y, 2 ) );

					if( !Modernizr.borderradius ) {

						// inside element / circle
						el.css( 'cursor', el.data('cursor') ).data( 'inside', true );
						_self.options.onMouseEnter( _self.$el );

					}
					else {

						if( distance <= circlePos.radius &#038;&#038; !el.data('inside') ) {

							// inside element / circle
							el.css( 'cursor', el.data('cursor') ).data( 'inside', true );
							_self.options.onMouseEnter( _self.$el );

						}
						else if( distance > circlePos.radius &#038;&#038; el.data('inside') ) {

							// inside element / outside circle
							el.css( 'cursor', 'default' ).data( 'inside', false );
							_self.options.onMouseLeave( _self.$el );

						}

					}

				});	

			},
			'mouseleave.circlemouse'	: function( event ) {

				var el 	= $(event.target);

				el.off('mousemove');

				if( el.data( 'inside' ) ) {

					el.data( 'inside', false );
					_self.options.onMouseLeave( _self.$el );

				}

			},
			'click.circlemouse'			: function( event ) {

				// allow the click only when inside the circle

				var el 	= $(event.target);

				if( !el.data( 'inside' ) )
					return false;
				else
					_self.options.onClick( _self.$el );

			}
		});

	},
	destroy				: function() {

		this.$el.unbind('.circlemouse').removeData('inside').removeData('cursor');

	}
};
</pre>
<p>When we enter with the mouse in the square bounding box of our circle, we bind the &#8216;mousemove&#8217; event to the element and like that we can track if the distance of the mouse to the center of the element if longer than  the radius. If it is, we know that we are not yet hovering the circular area of the element. </p>
<p><img src="http://tympanus.net/codrops/wp-content/uploads/2011/11/hoverTrigger.jpg" alt="HoverTrigger"  width="580" height="283" class="aligncenter size-full wp-image-6508" /><br />
Once the distance of the mouse is shorter than the radius, we know that we entered the circle and we trigger our custom &#8216;mouseenter&#8217; event. </p>
<p>We also only allow the click event when the mouse is inside of the circle.</p>
<p>In our example we will then apply our plugin to the regarding element. In our case, we are adding the hover class on &#8216;mouseenter&#8217; and removing it on &#8216;mouseleave&#8217;. </p>
<pre class="brush:js">
$('#circle').circlemouse({
	onMouseEnter	: function( el ) {

		el.addClass('ec-circle-hover');

	},
	onMouseLeave	: function( el ) {

		el.removeClass('ec-circle-hover');

	},
	onClick			: function( el ) {

		alert('clicked');

	}
});
</pre>
<p>Remember that the &#8220;normal&#8221; pseudo hover class is also defined in the noscript.css which gets applied when JavaScript is disabled. </p>
<p><strong>I hope you find this useful!</strong></p>
<p><a class="demo" href="http://tympanus.net/Development/HoverClickTriggerCircle/" >View demo</a> <a class="download" href="http://tympanus.net/Development/HoverClickTriggerCircle/HoverClickTriggerCircle.zip">Download source</a></p>
<div class="googlead"><!-- wp_ad_camp_1 --></div>
]]></content:encoded>
			<wfw:commentRss>http://tympanus.net/codrops/2011/11/22/hover-and-click-trigger-circular-elements/feed/</wfw:commentRss>
		<slash:comments>27</slash:comments>
		</item>
		<item>
		<title>Scrollbar Visibility with jScrollPane</title>
		<link>http://tympanus.net/codrops/2011/09/30/scrollbar-visibility-with-jscrollpane/</link>
		<comments>http://tympanus.net/codrops/2011/09/30/scrollbar-visibility-with-jscrollpane/#comments</comments>
		<pubDate>Fri, 30 Sep 2011 11:27:19 +0000</pubDate>
		<dc:creator>Mary Lou</dc:creator>
				<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[extension]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[scrollbar]]></category>
		<category><![CDATA[ui]]></category>

		<guid isPermaLink="false">http://tympanus.net/codrops/?p=5904</guid>
		<description><![CDATA[Sometimes it can be very useful to hide the scrollbar of elements in a website and only show it when the user really needs it. The real-time activity feed in Facebook is an example for such a behavior. Today we want to show you how to use jScrollPane and extend it with the functionality to hide the scrollbar and show it on hover.]]></description>
			<content:encoded><![CDATA[<p><a href="http://tympanus.net/Tutorials/ScrollbarVisibility/"><img src="http://tympanus.net/codrops/wp-content/uploads/2011/09/ScrollbarVisibility.jpg" alt="" title="ScrollbarVisibility" width="580" height="315" class="aligncenter size-full wp-image-5932" /></a></p>
<p><a class="demo" href="http://tympanus.net/Tutorials/ScrollbarVisibility/">View demo</a><a class="download" href="http://tympanus.net/Tutorials/ScrollbarVisibility/ScrollbarVisibility.zip">Download source</a></p>
<p>Sometimes it can be very useful to hide the scrollbar of elements in a website and only show it when the user really needs it. The real-time activity feed in Facebook is an example for such a behavior. Today we want to show you how to use jScrollPane and extend it with the functionality to hide the scrollbar and show it on hover.</p>
<p>jScrollPane was created by Kevin Luck and you can read more about it here:<br />
<strong><a href="http://jscrollpane.kelvinluck.com/" target="_blank">jScrollPane &#8211; cross browser styleable scrollbars with jQuery and CSS</a></strong></p>
<div id="bsap_1266918" class="bsarocks bsap_af25dfd2f1908889af7a1aa5f4dcbd9e"></div><div style="clear:both;"></div>
<h3>The Markup</h3>
<p>An example for the markup used in our demos is the following:</p>
<pre class="brush:xml">
&lt;div id="jp-container" class="jp-container"&gt;
	&lt;!-- content --&gt;
&lt;/div&gt;
</pre>
<p>The <strong>jp-container</strong> will be our scrollable content area.</p>
<h3>The CSS</h3>
<p>Besides the style for the custom scrollbar of jScrollPane, we will have the following style for our container:</p>
<pre class="brush:css">
.jp-container{
    width:500px;
    height:400px;
    position:relative;
    background:#fff;
    border:1px solid #D8DFEA;
	float:left;
}
</pre>
<h3>The JavaScript</h3>
<p>We are going to extend the jScrollPane plugin with the new functionality of showing and hiding the scrollbar:</p>
<pre class="brush:js">

// the element we want to apply the jScrollPane
var $el					= $('#jp-container').jScrollPane({
	verticalGutter 	: -16
}),

// the extension functions and options
	extensionPlugin 	= {

		extPluginOpts	: {
			// speed for the fadeOut animation
			mouseLeaveFadeSpeed	: 500,

			// scrollbar fades out after
			// hovertimeout_t milliseconds
			hovertimeout_t		: 1000,

			// if set to false, the scrollbar will
			// be shown on mouseenter and hidden on
			// mouseleave
			// if set to true, the same will happen,
			// but the scrollbar will be also hidden
			// on mouseenter after "hovertimeout_t" ms
			// also, it will be shown when we start to
			// scroll and hidden when stopping
			useTimeout			: false,

			// the extension only applies for devices
			// with width &gt; deviceWidth
			deviceWidth			: 980
		},
		hovertimeout	: null,
		// timeout to hide the scrollbar

		isScrollbarHover: false,
		// true if the mouse is over the scrollbar

		elementtimeout	: null,
		// avoids showing the scrollbar when moving
		// from inside the element to outside, passing
		// over the scrollbar

		isScrolling		: false,
		// true if scrolling

		addHoverFunc	: function() {

			// run only if the window has a width bigger than deviceWidth
			if( $(window).width() &lt;= this.extPluginOpts.deviceWidth ) return false;

			var instance		= this;

			// functions to show / hide the scrollbar
			$.fn.jspmouseenter 	= $.fn.show;
			$.fn.jspmouseleave 	= $.fn.fadeOut;

			// hide the jScrollPane vertical bar
			var $vBar			= this.getContentPane().siblings('.jspVerticalBar').hide();

			/*
			 * mouseenter / mouseleave events on the main element
			 * also scrollstart / scrollstop
			 * @James Padolsey : http://james.padolsey.com/javascript/special-scroll-events-for-jquery/
			 */
			$el.bind('mouseenter.jsp',function() {

				// show the scrollbar
				$vBar.stop( true, true ).jspmouseenter();

				if( !instance.extPluginOpts.useTimeout ) return false;

				// hide the scrollbar after hovertimeout_t ms
				clearTimeout( instance.hovertimeout );
				instance.hovertimeout 	= setTimeout(function() {
					// if scrolling at the moment don't hide it
					if( !instance.isScrolling )
						$vBar.stop( true, true ).jspmouseleave( instance.extPluginOpts.mouseLeaveFadeSpeed || 0 );
				}, instance.extPluginOpts.hovertimeout_t );

			}).bind('mouseleave.jsp',function() {

				// hide the scrollbar
				if( !instance.extPluginOpts.useTimeout )
					$vBar.stop( true, true ).jspmouseleave( instance.extPluginOpts.mouseLeaveFadeSpeed || 0 );
				else {
				clearTimeout( instance.elementtimeout );
				if( !instance.isScrolling )
						$vBar.stop( true, true ).jspmouseleave( instance.extPluginOpts.mouseLeaveFadeSpeed || 0 );
				}

			});

			if( this.extPluginOpts.useTimeout ) {

				$el.bind('scrollstart.jsp', function() {

					// when scrolling show the scrollbar
					clearTimeout( instance.hovertimeout );
					instance.isScrolling	= true;
					$vBar.stop( true, true ).jspmouseenter();

				}).bind('scrollstop.jsp', function() {

					// when stop scrolling hide the
					// scrollbar (if not hovering it at the moment)
					clearTimeout( instance.hovertimeout );
					instance.isScrolling	= false;
					instance.hovertimeout 	= setTimeout(function() {
						if( !instance.isScrollbarHover )
							$vBar.stop( true, true ).jspmouseleave( instance.extPluginOpts.mouseLeaveFadeSpeed || 0 );
					}, instance.extPluginOpts.hovertimeout_t );

				});

				// wrap the scrollbar
				// we need this to be able to add
				// the mouseenter / mouseleave events
				// to the scrollbar
				var $vBarWrapper	= $('&lt;div/&gt;').css({
					position	: 'absolute',
					left		: $vBar.css('left'),
					top			: $vBar.css('top'),
					right		: $vBar.css('right'),
					bottom		: $vBar.css('bottom'),
					width		: $vBar.width(),
					height		: $vBar.height()
				}).bind('mouseenter.jsp',function() {

					clearTimeout( instance.hovertimeout );
					clearTimeout( instance.elementtimeout );

					instance.isScrollbarHover	= true;

					// show the scrollbar after 100 ms.
					// avoids showing the scrollbar when moving
					// from inside the element to outside,
					// passing over the scrollbar
					instance.elementtimeout	= setTimeout(function() {
						$vBar.stop( true, true ).jspmouseenter();
					}, 100 );	

				}).bind('mouseleave.jsp',function() {

					// hide the scrollbar after hovertimeout_t
					clearTimeout( instance.hovertimeout );
					instance.isScrollbarHover	= false;
					instance.hovertimeout = setTimeout(function() {
						// if scrolling at the moment
						// don't hide it
						if( !instance.isScrolling )
							$vBar.stop( true, true ).jspmouseleave( instance.extPluginOpts.mouseLeaveFadeSpeed || 0 );
					}, instance.extPluginOpts.hovertimeout_t );

				});

				$vBar.wrap( $vBarWrapper );

			}

		}

	},

	// the jScrollPane instance
	jspapi 			= $el.data('jsp');

// extend the jScollPane by merging
$.extend( true, jspapi, extensionPlugin );
jspapi.addHoverFunc();
</pre>
<p>And that&#8217;s it! I hope you liked this little extension and find it useful!</p>
<p><a class="demo" href="http://tympanus.net/Tutorials/ScrollbarVisibility/">View demo</a><a class="download" href="http://tympanus.net/Tutorials/ScrollbarVisibility/ScrollbarVisibility.zip">Download source</a></p>
<div class="googlead"><!-- wp_ad_camp_1 --></div>
]]></content:encoded>
			<wfw:commentRss>http://tympanus.net/codrops/2011/09/30/scrollbar-visibility-with-jscrollpane/feed/</wfw:commentRss>
		<slash:comments>40</slash:comments>
		</item>
		<item>
		<title>Elastislide &#8211; A Responsive jQuery Carousel Plugin</title>
		<link>http://tympanus.net/codrops/2011/09/12/elastislide-responsive-carousel/</link>
		<comments>http://tympanus.net/codrops/2011/09/12/elastislide-responsive-carousel/#comments</comments>
		<pubDate>Mon, 12 Sep 2011 17:02:45 +0000</pubDate>
		<dc:creator>Mary Lou</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[carousel]]></category>
		<category><![CDATA[fluid]]></category>
		<category><![CDATA[images]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[responsive]]></category>
		<category><![CDATA[slider]]></category>
		<category><![CDATA[thumbnails]]></category>

		<guid isPermaLink="false">http://tympanus.net/codrops/?p=5677</guid>
		<description><![CDATA[With the responsive awakening in web design it becomes important to not only take care of the visual part of a website but also of the functionality. Elastislide is a responsive jQuery carousel that will adapt its size and its behavior in order to work on any screen size. Inserting the carousels structure into a container with a fluid width will also make the carousel fluid. ]]></description>
			<content:encoded><![CDATA[<p><a href="http://tympanus.net/Development/Elastislide/" title="Elastislide" target="_blank"><img src="http://tympanus.net/codrops/wp-content/uploads/2011/09/elastislide.jpg" alt="" title="Elastislide" width="580" height="315" class="aligncenter size-full wp-image-5680" /></a></p>
<p><a class="demo" href="http://tympanus.net/Development/Elastislide/" target="_blank">View demo</a> <a class="download" href="http://tympanus.net/Development/Elastislide/Elastislide.zip">Download source</a></p>
<p>With the responsive awakening in web design it becomes important to not only take care of the visual part of a website but also of the functionality. Elastislide is a responsive jQuery carousel that will adapt its size and its behavior in order to work on any screen size. Inserting the carousel&#8217;s structure into a container with a fluid width will also make the carousel fluid. </p>
<p>In a carousel, one could think that simply making its container &#8220;shorter&#8221; will solve the problem on smaller screens, but in some cases (e.g. when we have bigger images) it might be reasonable to resize the items as well. This and other options are part of Elastislide&#8217;s properties.</p>
<p>Elastislide uses the <a href="http://www.netcu.de/jquery-touchwipe-iphone-ipad-library" target="_blank">jQuery Touchwipe Plugin</a> which allows you to obtain the wipe event on an iPhone, iPad or iPod Touch. </p>
<div id="bsap_1266918" class="bsarocks bsap_af25dfd2f1908889af7a1aa5f4dcbd9e"></div><div style="clear:both;"></div>
<p>The images are by Karrie Nodalo and you can find her awesome photos here:<br />
<a href="http://www.flickr.com/photos/karrienodalo/" target="_blank">Karrie Nodalo&#8217;s Photostream on Flickr</a><br />
Her images are licensed under the <a target="_blank" href="http://creativecommons.org/licenses/by/2.0/deed.en_GB">Attribution 2.0 Generic License</a>.</p>
<h3>The HTML Structure</h3>
<p>The Markup for the carousel consists of a main wrapper that will adjust to the width of any fluid container you put it into. (If you put the carousel in a container with a fixed width, it will not adapt. So make sure that your container has a fluid layout.)<br />
The carousel element will have an unordered list with linked images:</p>
<pre class="brush:xml">
&lt;div id="carousel" class="es-carousel-wrapper"&gt;
	&lt;div class="es-carousel"&gt;
		&lt;ul&gt;
			&lt;li&gt;
				&lt;a href="#"&gt;
					&lt;img src="images/medium/1.jpg" alt="image01" /&gt;
				&lt;/a&gt;
			&lt;/li&gt;
			&lt;li&gt;...&lt;/li&gt;
			...
		&lt;/ul&gt;
	&lt;/div&gt;
&lt;/div&gt;
</pre>
<p>Use your preferred ID and call the plugin like this:</p>
<pre class="brush:js">
$('#carousel').elastislide({
	imageW 	: 180
});
</pre>
<p>where <strong>imageW</strong> is the width of the thumbnails.</p>
<h3>Options</h3>
<p>Elastislide has the following default options:</p>
<pre class="brush:js">
speed		: 450,
// animation speed

easing		: '',
// animation easing effect

imageW		: 190,
// the images width

margin		: 3,
// image margin right

border		: 2,
// image border

minItems	: 1,
// the minimum number of items to show.
// when we resize the window, this will
// make sure minItems are always shown
// (unless of course minItems is higher
// than the total number of elements)

current		: 0,
// index of the current item
// when we resize the window,
// the plugin will make sure that
// this item is visible 

onClick		: function() { return false; }
// click item callback
// Example of how to get the index
// of the clicked element:
/*
$('#carousel').elastislide({
    onClick  :  function( $item ) {
        alert( 'The clicked item´s index is ' + $item.index() )
    }
});
*/
</pre>
<p>It is also possible to dynamically add new items to the carousel. The following is an example on how to achieve that:</p>
<pre class="brush:js">
var $items	= $('&lt;li&gt;&lt;a href="#"&gt;&lt;img src="images/large/1.jpg" alt="image01" /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#"&gt;&lt;img src="images/large/2.jpg" alt="image01" /&gt;&lt;/a&gt;&lt;/li&gt;');
$('#carousel').append($items).elastislide( 'add', $items );
</pre>
<p>I hope you like this plugin and find it useful!</p>
<p><a class="demo" href="http://tympanus.net/Development/Elastislide/" target="_blank">View demo</a> <a class="download" href="http://tympanus.net/Development/Elastislide/Elastislide.zip">Download source</a></p>
<div class="googlead"><!-- wp_ad_camp_1 --></div>
]]></content:encoded>
			<wfw:commentRss>http://tympanus.net/codrops/2011/09/12/elastislide-responsive-carousel/feed/</wfw:commentRss>
		<slash:comments>75</slash:comments>
		</item>
		<item>
		<title>J is for jCookies &#8211; HTTP Cookie Handling for jQuery</title>
		<link>http://tympanus.net/codrops/2011/09/04/j-is-for-jcookies-http-cookie-handling-for-jquery/</link>
		<comments>http://tympanus.net/codrops/2011/09/04/j-is-for-jcookies-http-cookie-handling-for-jquery/#comments</comments>
		<pubDate>Sun, 04 Sep 2011 13:18:34 +0000</pubDate>
		<dc:creator>Brian S. Reed</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[scottreeddesign]]></category>

		<guid isPermaLink="false">http://tympanus.net/codrops/?p=5604</guid>
		<description><![CDATA[jCookies, a jQuery plugin, makes getting and settings HTTP Cookies a breeze. jCookies allows the storage of any type of data: strings, arrays, objects, etc. A while back while developing my <a href="http://formbuilder.scottreeddesign.com/">FormBuilder</a> I needed a good solution for storing cookies via JavaScript. As a result of the work down for that project I built jCookies.]]></description>
			<content:encoded><![CDATA[<p><img class="size-full wp-image-5628 aligncenter" title="jcook" src="http://tympanus.net/codrops/wp-content/uploads/2011/09/jcook.jpg" alt="" width="580" height="315" /></p>
<p>jCookies, a jQuery plugin, makes getting and settings HTTP Cookies a breeze. jCookies allows the storage of any type of data: strings, arrays, objects, etc. A while back while developing my <a href="http://formbuilder.scottreeddesign.com/">FormBuilder</a> I needed a good solution for storing cookies via JavaScript. As a result of the work down for that project I built jCookies.</p>
<p>The following will demonstrate the methods for storing and retrieving data using jCookies and will show how to retrieve data using server side code such as C# and PHP.</p>
<p><strong>Note:</strong> Data is stored in the cookie as JSON data then Base64 encoded to enable the survival through transport layers that are not 8-bit clean. JSON and base64 functions are included in the script and if trimmed out, provided they exist elsewhere, would reduce the size by 70%.</p>
<div id="bsap_1266918" class="bsarocks bsap_af25dfd2f1908889af7a1aa5f4dcbd9e"></div><div style="clear:both;"></div>
<h3>Creating Cookies</h3>
<p>To create a cookie you call jCookies and must pass two properties, name and value.</p>
<pre class="brush:js">
$.jCookies({
    name : 'Listening To',
    value : { album : 'The Go Round', artist : 'Inf', rating : 9, thumbs_up : true}
});
</pre>
<p>As you can see you can store pretty much anything. By default cookies are set to expire after 27 days. You can edit the expiration by settings one of the following properties: seconds, minutes, hours, days. The value entered for these properties must be a valid number or they will be ignored.</p>
<pre class="brush:js">$.jCookies({ name : 'User', value : { username : 'Bob' , level : 5 }, minutes : 60 });</pre>
<p><strong>Note:</strong> If you plan on retrieving data from the server side via ASP.net keep the cookie data very simple. More on this later.</p>
<h3>Retrieving Cookies</h3>
<p>To retrieve a cookie you call jCookies and pass a single properties, get.</p>
<pre class="brush:js">
var listening_to = $.jCookies({ get : 'Listening To' });
    // response: { album : 'The Go Round', artist : 'Inf', rating : 9, thumbs_up : true}

var rutabaga = $.jCookies({ get : 'Rutabaga' }); // (cookie was set by another proces)
    // response: false
</pre>
<p>Data is returned just as you would expect it to. If there was no cookie stored with that name, the cookie has expired, or there was an error then the response would be false. If you want to see if there was an error with the cookie you can set the optional property error. By default this property is set to false.</p>
<pre class="brush:js">
var rutabaga = $.jCookies({ get : 'Rutabaga', error : true });
    /* response:
        Error : {
            arguments : undefined,
            message : "Invalid base64 data",
            stack : "—",
            type : undefined
        }
    */</pre>
<p>This is an error response from Chrome. Depending on your browser your results may vary.</p>
<h3>Erasing Cookies</h3>
<p>To erase a cookie you call jCookies and pass a single property, erase.</p>
<pre class="brush:js">
var erased_listening_to = $.jCookies({ erase : 'Listening To' });
    // response: true

var rutabaga = $.jCookies({ erase : 'Rutabaga' });
    // response: false
</pre>
<p>If a cookie existed and was erased successfully true is returned. If the cookie never existed false is returned.</p>
<h3>jCookies Server Side</h3>
<p>Dealing with HTTP Cookies created by jCookies on the server side is a cinch you simply need to Base64 decode the data then JSON decode the data.</p>
<h4>Setting cookie in JavaScript</h4>
<pre class="brush:js">$.jCookies({name:'user',value:{name:'brian',level:'awesome'}});
    // response: true</pre>
<h4>Retrieving the cookie in PHP</h4>
<pre class="brush:js">
&lt;?php print_r(json_decode(base64_decode($_COOKIE['user'], true))); ?&gt;
    /* response:
        stdClass Object
            (
            [name] =&gt; brian
            [level] =&gt; awesome
            )
    */</pre>
<p>With PHP it couldn&#8217;t be easier. In the demonstration above I am printing out the entire cookie.</p>
<h4>Retrieving the cookie in C#</h4>
<pre class="brush:js">
Dictionary&lt;string,object&gt; user =
  new JavaScriptSerializer().Deserialize&lt;Dictionary&lt;string,object&gt;&gt;
  (Encoding.UTF8.GetString(
	Convert.FromBase64String(Page.Request.Cookies["user"].Value)
  ));

Page.Response.Write("user : name  = " + (string) user["name"]);
</pre>
<p>With C# its a bit more difficult. You have to set the type of each bit of data that comes back before you can use it. That is why I am storing the data as Dictionary&lt;string,object&gt;. We set the property to string to make it accessible and set the value to object for casting later. If you knew exactly the format of the cookie beforehand you could always create your own class and store that data in that class.</p>
<p>That about does it. If you want to know more <a href="http://scottreeddesign.com" target="_blank">visit my site</a> or the <a href="http://plugins.jquery.com/project/jcookies" target="_blank">jQuery plugin page</a>.</p>
<p><a href="http://tympanus.net/Development/jcookies/jcookies.zip">Download jCookies</a></p>
<div class="googlead"><!-- wp_ad_camp_1 --></div>
]]></content:encoded>
			<wfw:commentRss>http://tympanus.net/codrops/2011/09/04/j-is-for-jcookies-http-cookie-handling-for-jquery/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Image Zoom Tour with jQuery</title>
		<link>http://tympanus.net/codrops/2011/08/23/image-zoom-tour/</link>
		<comments>http://tympanus.net/codrops/2011/08/23/image-zoom-tour/#comments</comments>
		<pubDate>Tue, 23 Aug 2011 15:49:24 +0000</pubDate>
		<dc:creator>Mary Lou</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[tour]]></category>
		<category><![CDATA[zoom]]></category>

		<guid isPermaLink="false">http://tympanus.net/codrops/?p=5535</guid>
		<description><![CDATA[Today we want to share a little zoom tour script with you. Showing a main image initially, we want to be able to zoom into certain parts of the image by clicking on tags, using another image for the closer view. This next step can contain other tags that again allow to show more images. We achieve the "zoom" effect by enlarging the current image and fading in the new one.]]></description>
			<content:encoded><![CDATA[<p><a href="http://tympanus.net/Development/ImageZoomTour/" target="_blank"><img src="http://tympanus.net/codrops/wp-content/uploads/2011/08/ImageZoomTour.jpg" alt="" title="ImageZoomTour" width="580" height="315" class="aligncenter size-full wp-image-5545" /></a><br />
<a class="demo" href="http://tympanus.net/Development/ImageZoomTour/" target="_blank">View demo</a> <a class="download" href="http://tympanus.net/Development/ImageZoomTour/ImageZoomTour.zip">Download source</a></p>
<p>Today we want to share a little zoom tour script with you. Showing a main image initially, we want to be able to zoom into certain parts of the image by clicking on tags, using another image for the closer view. This next step can contain other tags that again allow to show more images. We achieve the &#8220;zoom&#8221; effect by enlarging the current image and fading in the new one.</p>
<p>The images used in the demos can be found here:<br />
image1: <a href="http://www.flickr.com/photos/wili/284084730/" target="_blank">City Crowd</a><br />
image1_5: <a href="http://www.flickr.com/photos/loozrboy/3557932377/sizes/l/in/photostream/" target="_blank">Office</a><br />
image2: <a href="http://www.flickr.com/photos/naan/2398024748/" target="_blank">Ikea Room</a><br />
image3_n: <a href="http://www.flickr.com/photos/joaoa/sets/72157604853262035/" target="_blank">Portimão Marina</a><br />
Background Pattern by <a href="http://www.blunia.com/" target="_blank">http://www.blunia.com/</a> on <a href="http://subtlepatterns.com/" target="_blank">http://subtlepatterns.com/</a></p>
<div id="bsap_1266918" class="bsarocks bsap_af25dfd2f1908889af7a1aa5f4dcbd9e"></div><div style="clear:both;"></div>
<h3>The HTML Structure</h3>
<p>For the HTML structure we will have a main container and each image inside of a div with the class &#8220;zt-item&#8221;:</p>
<pre class="brush:xml">
&lt;div id="zt-container" class="zt-container">
	&lt;div class="zt-item" data-id="zt-item-1">
		&lt;img class="zt-current" src="images/image1.jpg" />
		&lt;div class="zt-tag" data-dir="1" data-link="zt-item-2" data-zoom="5" data-speed="700" data-delay="50" style="top:138px;left:151px;">&lt;/div>
		&lt;div class="zt-tag" data-dir="1" data-link="zt-item-3" data-zoom="6" data-speed="700" data-delay="50" style="top:253px;left:520px;">&lt;/div>
	&lt;/div>
	&lt;div class="zt-item" data-id="zt-item-2">
		&lt;img class="zt-current" src="images/image1_1.jpg" />
		&lt;div class="zt-tag zt-tag-back" data-dir="-1" data-link="zt-item-1" data-zoom="5" data-speed="500" data-delay="0">&lt;/div>
	&lt;/div>
	&lt;div class="zt-item" data-id="zt-item-3">
		&lt;img class="zt-current" src="images/image2_2.jpg" />
		&lt;div class="zt-tag zt-tag-back" data-dir="-1" data-link="zt-item-1" data-zoom="6" data-speed="500" data-delay="0">&lt;/div>
	&lt;/div>
&lt;/div>
</pre>
<p><code>&lt;img class="zt-current" src="images/imageX.jpg" /&gt;</code> is the image in each step. The item then have tags with certain attributes.<br />
The data attributes are the following:</p>
<ul>
<li><strong>data-dir</strong> is either 1 or -1 depending on whether we want to &#8220;zoom in&#8221; (1) or &#8220;zoom back out&#8221; (-1)</li>
<li><strong>data-link</strong> will indicate to which item we connect the tag to (based on the <strong>data-id</strong> we give to each item)</li>
<li><strong>data-zoom</strong> is the factor of zooming. Set very low, the image we zoom into or zoom back to will only enlarge slightly. </li>
<li><strong>data-speed</strong> the animation speed in milliseconds</li>
<li><strong>data-delay</strong> the delay time for the new image to appear</li>
</ul>
<p>The example structure above has the first initial image (<strong>zt-item-1</strong>) with two tags that lead to <strong>zt-item-2</strong> and <strong>zt-item-3</strong>. <strong>zt-item-2</strong> and <strong>zt-item-3</strong> only have the back tag. As you can see, the back tag has another class &#8220;zt-tag-back&#8221; and a <strong>data-dir </strong>value of -1.</p>
<p>The position of the tags is defined in the style attribute and you can also add another size for it, too. </p>
<h3>Options</h3>
<p>The following are the default options:</p>
<pre class="brush:js">
$('#zt-container').zoomtour({
	// if true the tags are rotated depending on their position
	rotation		: true,
	// zoom out animation easing. Example: easeOutBounce , easeOutBack
	zoominEasing	: '',
	// zoom out animation easing
	zoomoutEasing	: ''
});
</pre>
<p>We hope you like this little script and find it useful!</p>
<p><a class="demo" href="http://tympanus.net/Development/ImageZoomTour/" target="_blank">View demo</a> <a class="download" href="http://tympanus.net/Development/ImageZoomTour/ImageZoomTour.zip">Download source</a></p>
<div class="googlead"><!-- wp_ad_camp_1 --></div>
]]></content:encoded>
			<wfw:commentRss>http://tympanus.net/codrops/2011/08/23/image-zoom-tour/feed/</wfw:commentRss>
		<slash:comments>49</slash:comments>
		</item>
		<item>
		<title>Portfolio Image Navigation with jQuery</title>
		<link>http://tympanus.net/codrops/2011/08/09/portfolio-image-navigation/</link>
		<comments>http://tympanus.net/codrops/2011/08/09/portfolio-image-navigation/#comments</comments>
		<pubDate>Tue, 09 Aug 2011 12:49:12 +0000</pubDate>
		<dc:creator>Marcin Dziewulski</dc:creator>
				<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[images]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Navigation]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[portfolio]]></category>

		<guid isPermaLink="false">http://tympanus.net/codrops/?p=5458</guid>
		<description><![CDATA[Today we want to create a portfolio image navigation template with jQuery. The idea is to show some portfolio items in a grouped fashion and navigate through them in all 2D ways (horizontal/vertical). Either the arrows or the little boxes below the current image can be used in order to navigate.]]></description>
			<content:encoded><![CDATA[<p><a href="http://tympanus.net/Tutorials/PortfolioImageNavigation/" target="_blank"><img src="http://tympanus.net/codrops/wp-content/uploads/2011/08/PortfolioImageNavigation.jpg" alt="" title="PortfolioImageNavigation" width="580" height="315" class="aligncenter size-full wp-image-5470" /></a><br />
<a class="demo" href="http://tympanus.net/Tutorials/PortfolioImageNavigation/" target="_blank">View demo</a> <a class="download" href="http://tympanus.net/Tutorials/PortfolioImageNavigation/PortfolioImageNavigation.zip">Download source</a></p>
<p>Today we want to create a portfolio image navigation template with jQuery. The idea is to show some portfolio items in a grouped fashion and navigate through them in all 2D ways (horizontal/vertical). Either the arrows or the little boxes below the current image can be used in order to navigate.</p>
<p>The beautiful photography is by Angelo González. Check out his <a href="http://www.flickr.com/photos/ag2r/" target="_blank">Flickr photostream</a> or follow him on Twitter <a href="http://twitter.com/ag2r" target="_blank">@ag2r</a>.</p>
<div id="bsap_1266918" class="bsarocks bsap_af25dfd2f1908889af7a1aa5f4dcbd9e"></div><div style="clear:both;"></div>
<h3>The Markup</h3>
<p>For the markup, we&#8217;ll have a main wrapper div with the background, the arrows and the gallery containers inside:</p>
<pre class="brush:xml">
&lt;div id="portfolio"&gt;
	&lt;div id="background"&gt;&lt;/div&gt;
	&lt;div class="arrows"&gt;
		&lt;a href="#" class="up"&gt;Up&lt;/a&gt;
		&lt;a href="#" class="down"&gt;Down&lt;/a&gt;
		&lt;a href="#" class="prev"&gt;Previous&lt;/a&gt;
		&lt;a href="#" class="next"&gt;Next&lt;/a&gt;
	&lt;/div&gt;
	&lt;div class="gallery"&gt;
		&lt;div class="inside"&gt;
			&lt;div class="item"&gt;
				&lt;div&gt;&lt;img src="images/1.jpg" alt="image1" /&gt;&lt;/div&gt;
				&lt;div&gt;&lt;img src="images/2.jpg" alt="image2" /&gt;&lt;/div&gt;
				&lt;div&gt;&lt;img src="images/3.jpg" alt="image3" /&gt;&lt;/div&gt;
			&lt;/div&gt;
			&lt;div class="item"&gt;
				&lt;div&gt;&lt;img src="images/4.jpg" alt="image4" /&gt;&lt;/div&gt;
				&lt;div&gt;&lt;img src="images/5.jpg" alt="image5" /&gt;&lt;/div&gt;
			&lt;/div&gt;
			&lt;div class="item"&gt;
				&lt;div&gt;&lt;img src="images/6.jpg" alt="image6" /&gt;&lt;/div&gt;
				&lt;div&gt;&lt;img src="images/7.jpg" alt="image7" /&gt;&lt;/div&gt;
				...
			&lt;/div&gt;
			&lt;div class="item"&gt;
				...
			&lt;/div&gt;
		&lt;/div&gt;
	&lt;/div&gt;
&lt;/div&gt;
</pre>
<p>Now, let&#8217;s take a look at the style.</p>
<h3>The CSS</h3>
<p>First, let&#8217;s define the style for the main container. We&#8217;ll set it&#8217;s position to be fixed and center it in the screen with the 50% and negative margin technique:</p>
<pre class="brush:css">
#portfolio {
	position:fixed;
	top:50%;
	left:50%;
	z-index:1;
	width:1000px;
	height:500px;
	margin:-250px 0 0 -500px;
}
</pre>
<p>The background will also be fixed and we&#8217;ll add a background image that creates the spotlight effect:</p>
<pre class="brush:css">
#background {
	position:fixed;
	top:0;
	left:0;
	width:100%;
	height:100%;
	z-index:2;
	background:url(../images/bg.png) no-repeat center;
}
</pre>
<p>The gallery will be positioned absolutely, just like it&#8217;s inner div:</p>
<pre class="brush:css">
#portfolio .gallery,
#portfolio .gallery .inside {
	position:absolute;
	top:0;
	left:0;
}
</pre>
<p>The gallery will also occupy all the space of the portfolio:</p>
<pre class="brush:css">
#portfolio .gallery {
	width:100%;
	height:100%;
	overflow:hidden;
}
</pre>
<p>We&#8217;ll fix the z-index of the inside div in order for keeping the stacking right:</p>
<pre class="brush:css">
#portfolio .gallery .inside {
	z-index:1;
}
</pre>
<p>Now, we&#8217;ll style the arrows. First, we&#8217;ll define the common style:</p>
<pre class="brush:css">
#portfolio .arrows a {
	position:absolute;
	z-index:3;
	width:32px;
	height:32px;
	background-image:url(../images/arrows.png);
	background-repeat:no-repeat;
	outline:none;
	text-indent:-9999px;
}
</pre>
<p>And then we&#8217;ll style all the single arrows:</p>
<pre class="brush:css">
#portfolio .arrows .prev,
#portfolio .arrows .up {
	display:none;
}

#portfolio .arrows .up,
#portfolio .arrows .down {
	left:50%;
	margin-left:-16px;
}

#portfolio .arrows .prev,
#portfolio .arrows .next {
	top:180px;
}

#portfolio .arrows .up {
	background-position:0 -64px;
	top:20px;
}

#portfolio .arrows .down {
	background-position:0 -96px;
	bottom:120px;
}

#portfolio .arrows .prev {
	background-position:0 -32px;
	left:60px;
}

#portfolio .arrows .next {
	background-position:0 0;
	right:60px;
}

#portfolio .arrows .up:hover {
	background-position:-32px -64px;
}

#portfolio .arrows .down:hover {
	background-position:-32px -96px;
}

#portfolio .arrows .next:hover {
	background-position:-32px 0;
}

#portfolio .arrows .prev:hover {
	background-position:-32px -32px;
}
</pre>
<p>The item divs, which are our wrappers for the image sets will be styled as follows:</p>
<pre class="brush:css">
#portfolio .item {
	position:absolute;
	top:0;
	width:1000px;
	height:400px;
}
</pre>
<p>Each image wrapper will be positioned absolutely, too and occupy all the space:</p>
<pre class="brush:css">
#portfolio .item div {
	position:absolute;
	left:0;
	width:100%;
	height:100%;
}
</pre>
<p>Each image will be centered. Keep in mind that in our example we are using images with a width of 600px, so if you use different ones, you need to adapt this:</p>
<pre class="brush:css">
#portfolio .item div img {
	position:absolute;
	top:0;
	left:50%;
	margin-left:-300px;
}
</pre>
<p>Let&#8217;s style the little boxes navigation which will be added dynamically:</p>
<pre class="brush:css">
#portfolio .paths {
	position:absolute;
	bottom:60px;
	left:50%;
	margin-left:-30px;
	z-index:4;
}

#portfolio .paths div {
	position:absolute;
	top:0;
}

#portfolio .paths a {
	background:#333;
	display:block;
	position:absolute;
	left:0;
	outline:none;
}

#portfolio .paths a:hover,
#portfolio .paths .active {
	background:#fff;
}
</pre>
<p>And that&#8217;s all the style!</p>
<h3>The JavaScript</h3>
<p>In this part, we&#8217;ll show you how to initialize the plugin.<br />
In the head of our HTML file, we will include the following three scripts:</p>
<pre class="brush:js">
&lt;script src="js/jquery.js" type="text/javascript"&gt;&lt;/script&gt;
&lt;script src="js/portfolio.js" type="text/javascript"&gt;&lt;/script&gt;
&lt;script src="js/init.js" type="text/javascript"&gt;&lt;/script&gt;
</pre>
<p>The first one is the jQuery library, the second one is our plugin and the third one is the initialization script:</p>
<pre class="brush:js">
var o = {
	init: function(){
		this.portfolio.init();
	},
	portfolio: {
		data: {
		},
		init: function(){
			$('#portfolio').portfolio(o.portfolio.data);
		}
	}
}

$(function(){ o.init(); });
</pre>
<p>The default option values for our plugin are the following:</p>
<pre class="brush:js">
$('#portfolio').portfolio({
	image: {
		width: 600,
		height: 400,
		margin: 20
	},
	path: {
		width: 10,
		height: 10,
		marginTop: 5,
		marginLeft: 5
	},
	animationSpeed: 400
});
</pre>
<p>The image options are the width, height and the margin between the images. The path options define the aspect of the little navigation boxes, how big they should be and how much margin they should have. Last, the animation speed can be adjusted.</p>
<p>Stay tuned for the next tutorial!</p>
<p><a class="demo" href="http://tympanus.net/Tutorials/PortfolioImageNavigation/" target="_blank">View demo</a><a class="download" href="http://tympanus.net/Tutorials/PortfolioImageNavigation/PortfolioImageNavigation.zip">Download source</a></p>
<div class="googlead"><!-- wp_ad_camp_1 --></div>
]]></content:encoded>
			<wfw:commentRss>http://tympanus.net/codrops/2011/08/09/portfolio-image-navigation/feed/</wfw:commentRss>
		<slash:comments>47</slash:comments>
		</item>
		<item>
		<title>Collective: Timeglider, a jQuery Plugin</title>
		<link>http://tympanus.net/codrops/2011/04/07/collective-timeglider-a-jquery-plugin/</link>
		<comments>http://tympanus.net/codrops/2011/04/07/collective-timeglider-a-jquery-plugin/#comments</comments>
		<pubDate>Thu, 07 Apr 2011 13:59:06 +0000</pubDate>
		<dc:creator>Community</dc:creator>
				<category><![CDATA[Collective]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[timeline]]></category>
		<category><![CDATA[zoom]]></category>

		<guid isPermaLink="false">http://tympanus.net/codrops/?p=4609</guid>
		<description><![CDATA[Timeglider is a zooming, panning data-driven timeline — great for history projects, project planning, and much more. This Javascript/jQuery plugin is completely free &#038; open-source [MIT].. Source http://timeglider.com/jquery/ Demo http://timeglider.com/jquery/large.html]]></description>
			<content:encoded><![CDATA[<p><!-- Digg Digg Disabled --></p>
<p><a href="http://timeglider.com/jquery/"><img src="http://tympanus.net/codrops/wp-content/uploads/2011/04/Timeglider.jpg" alt="" title="Timeglider" width="585" height="521" class="aligncenter size-full wp-image-4610" /></a></p>
<p>Timeglider is a zooming, panning data-driven timeline — great for history projects, project planning, and much more. This Javascript/jQuery plugin is completely free &#038; open-source [MIT]..</p>
<h3>Source</h3>
<p><a href="http://timeglider.com/jquery/">http://timeglider.com/jquery/</a></p>
<h3>Demo</h3>
<p><a href="http://timeglider.com/jquery/large.html" target="_blank">http://timeglider.com/jquery/large.html</a><br />
<br/></p>
<div class="googlead"><!-- wp_ad_camp_1 --></div>
]]></content:encoded>
			<wfw:commentRss>http://tympanus.net/codrops/2011/04/07/collective-timeglider-a-jquery-plugin/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Collective: diagonalFade, a jQuery Plugin</title>
		<link>http://tympanus.net/codrops/2011/04/07/collective-diagonalfade-a-jquery-plugin/</link>
		<comments>http://tympanus.net/codrops/2011/04/07/collective-diagonalfade-a-jquery-plugin/#comments</comments>
		<pubDate>Thu, 07 Apr 2011 13:53:47 +0000</pubDate>
		<dc:creator>Community</dc:creator>
				<category><![CDATA[Collective]]></category>
		<category><![CDATA[animation]]></category>
		<category><![CDATA[grid]]></category>
		<category><![CDATA[images]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[plugin]]></category>

		<guid isPermaLink="false">http://tympanus.net/codrops/?p=4604</guid>
		<description><![CDATA[diagonalFade is a jQuery plugin allowing you to easily specify direction, fade-in, fade-out, and a host of other options to a grouping of elements. All you have to do is import it, specify the container to which the group of items resides, and poof, you&#8217;re off and away.. Source http://jonobr1.github.com/diagonalFade/ Demo http://jonobr1.github.com/diagonalFade/]]></description>
			<content:encoded><![CDATA[<p><!-- Digg Digg Disabled --></p>
<p><a href="http://jonobr1.github.com/diagonalFade/"><img src="http://tympanus.net/codrops/wp-content/uploads/2011/04/diagonalFade.jpg" alt="" title="diagonalFade" width="585" height="397" class="aligncenter size-full wp-image-4605" /></a></p>
<p>diagonalFade is a jQuery plugin allowing you to easily specify direction, fade-in, fade-out, and a host of other options to a grouping of elements. All you have to do is import it, specify the container to which the group of items resides, and poof, you&#8217;re off and away..</p>
<h3>Source</h3>
<p><a href="http://jonobr1.github.com/diagonalFade/">http://jonobr1.github.com/diagonalFade/</a></p>
<h3>Demo</h3>
<p><a href="http://jonobr1.github.com/diagonalFade/" target="_blank">http://jonobr1.github.com/diagonalFade/</a><br />
<br/></p>
<div class="googlead"><!-- wp_ad_camp_1 --></div>
]]></content:encoded>
			<wfw:commentRss>http://tympanus.net/codrops/2011/04/07/collective-diagonalfade-a-jquery-plugin/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Collective: zAccordion jQuery plugin</title>
		<link>http://tympanus.net/codrops/2011/01/14/collective-zaccordion-jquery-plugin/</link>
		<comments>http://tympanus.net/codrops/2011/01/14/collective-zaccordion-jquery-plugin/#comments</comments>
		<pubDate>Fri, 14 Jan 2011 12:06:04 +0000</pubDate>
		<dc:creator>Community</dc:creator>
				<category><![CDATA[Collective]]></category>
		<category><![CDATA[accordion]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[plugin]]></category>

		<guid isPermaLink="false">http://tympanus.net/codrops/?p=3634</guid>
		<description><![CDATA[&#8220;A while back I did a project that required a horizontal accordion. I eventually found a plugin, but really wasn&#8217;t happy with the results. The setup was pretty messy and to get the plugin working like I wanted, it took more time than it was worth. I also did not want text in the handle [...]]]></description>
			<content:encoded><![CDATA[<p><!-- Digg Digg Disabled --></p>
<p><a href="http://www.armagost.com/zaccordion/"><img src="http://tympanus.net/codrops/wp-content/uploads/2011/01/zaccordion.jpg" alt="" title="zaccordion" width="580" height="207" class="aligncenter size-full wp-image-3635" /></a></p>
<p><em>&#8220;A while back I did a project that required a horizontal accordion. I eventually found a plugin, but really wasn&#8217;t happy with the results. The setup was pretty messy and to get the plugin working like I wanted, it took more time than it was worth.</p>
<p>I also did not want text in the handle or tab area. I wanted it to be more like an image slider. So I decided to do some coding after the project was complete and ended up with my first jQuery plugin.&#8221;</em></p>
<p>Example of use:</p>
<pre class="brush:js">
$(document).ready(function() {
	$("#featured").zAccordion({
		easing: "easeOutBounce",
		timeout: 5500,
		slideWidth: 600,
		width: 960,
		height: 310
	});
});
</pre>
<h3>Source</h3>
<p><a href="http://www.armagost.com/zaccordion/">http://www.armagost.com/zaccordion/</a></p>
<h3>Demo</h3>
<p><a href="http://www.armagost.com/zaccordion/" target="_blank">http://www.armagost.com/zaccordion/</a><br />
<br/></p>
<div class="googlead"><!-- wp_ad_camp_1 --></div>
]]></content:encoded>
			<wfw:commentRss>http://tympanus.net/codrops/2011/01/14/collective-zaccordion-jquery-plugin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Collective: Smart3D jQuery plugin</title>
		<link>http://tympanus.net/codrops/2011/01/10/collective-smart3d-jquery-plugin/</link>
		<comments>http://tympanus.net/codrops/2011/01/10/collective-smart3d-jquery-plugin/#comments</comments>
		<pubDate>Mon, 10 Jan 2011 17:39:32 +0000</pubDate>
		<dc:creator>Community</dc:creator>
				<category><![CDATA[Collective]]></category>
		<category><![CDATA[3d]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[parallax]]></category>
		<category><![CDATA[plugin]]></category>

		<guid isPermaLink="false">http://tympanus.net/codrops/?p=3503</guid>
		<description><![CDATA[A nice jQuery Plugin that uses several images to create the illusion of a 3D scenario using the parallax effect. Example of use: $ ( function () { $ ( '# Mindscape' ). Smart3D (850); }); &#60;ul id="Mindscape"&#62; &#60;li&#62;&#60;img src=".../ mindscape1.png"/&#62;&#60;/li&#62; &#60;li&#62;&#60;img src=".../ mindscape2.png"/&#62;&#60;/li&#62; &#60;/ul&#62; #Mindscape { width : 750px ; height : 174px ; [...]]]></description>
			<content:encoded><![CDATA[<p><!-- Digg Digg Disabled --></p>
<p><a href="http://4coder.info/smart3d-jquery-plugin/"><img src="http://tympanus.net/codrops/wp-content/uploads/2011/01/jquery-smart3D.jpg" alt="" title="jquery-smart3D" width="580" height="166" class="aligncenter size-full wp-image-3504" /></a></p>
<p>A nice jQuery Plugin that uses several images to create the illusion of a 3D scenario using the parallax effect.</p>
<p>Example of use:</p>
<pre class="brush:js">
$ ( function () {
    $ ( '# Mindscape' ). Smart3D (850);
});
</pre>
<pre class="brush:xml">
&lt;ul id="Mindscape"&gt;
    &lt;li&gt;&lt;img src=".../ mindscape1.png"/&gt;&lt;/li&gt;
    &lt;li&gt;&lt;img src=".../ mindscape2.png"/&gt;&lt;/li&gt;
&lt;/ul&gt;
</pre>
<pre class="brush:css">
#Mindscape {
    width : 750px ;
    height : 174px ;
}
</pre>
<h3>Source</h3>
<p><a href="http://4coder.info/smart3d-jquery-plugin/">http://4coder.info/smart3d-jquery-plugin/</a></p>
<h3>Demo</h3>
<p><a href="http://4coder.info/demo/jquery-smart3D/" target="_blank">http://4coder.info/demo/jquery-smart3D/</a><br />
<br/></p>
<div class="googlead"><!-- wp_ad_camp_1 --></div>
]]></content:encoded>
			<wfw:commentRss>http://tympanus.net/codrops/2011/01/10/collective-smart3d-jquery-plugin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
<!-- This Quick Cache file was built for (  tympanus.net/codrops/tag/plugin/feed/ ) in 0.25049 seconds, on Feb 7th, 2012 at 12:26 pm UTC. -->
<!-- This Quick Cache file will automatically expire ( and be re-built automatically ) on Feb 7th, 2012 at 1:26 pm UTC -->
