Submit your widget

Colorful jQuery animation slide menu

Created 11 years ago   Views 45424   downloads 9190    Author tutorialpot
Colorful  jQuery animation slide menu
View DemoDownload
99
Share |

This is a nice and colorful jQuery and css menu
The Idea is to create a normal ul li menu and apply a top border to the anchor tags with colors that will match with the element background color when it is hovered.
The jQuery will create a span element and insert it into the HTML structure, this is the colourful background that will be moving across the menu.

HTML Structure

 <!-- start menu -->
<div id="menu">
<ul>
<li>
                <a href="">Web Design </a>
              </li>
<li>
                <a href="">jQuery</a>
              </li>
<li>
                <a href="">Html5 & Css3</a>
              </li>
<li>
                <a href="">PHP</a>
              </li>
<li>
                <a href="">Photoshop</a>
              </li>
<li>
                <a href="">Illustrator</a>
              </li>
<li>
                <a href="">WordPress</a>
              </li>
<li>
                <a href="">Tutorials</a>
              </li>
<li>
                <a href="">Tutorialpot</a>
              </li>
</ul></div>

      <!-- end menu -->

jQuery

This is where the colors are applied and the background is animatedacross the menu

jQuery(document).ready(function($) {

	/* create the span tht will be animated across the menu*/
	/* declare our many variables for easy ref*/

		var $span = $('<span class="colourful"></span>');
		$span.insertBefore($("#menu ul"));

		var $menu_link = $('#menu li a'),
		$hovered =  $('#menu a.hovered'),/**/
		$hovered_pos = $hovered.position('#menu');/*position of hovered menu item*/

		/* declare our many colors that can confuse a chameleon*/
		var $colour_arr = ['#fbb92e','#f8d52f','#b4f62f','#54f7a8','#3ff7f3','#3a97fa','#6835f9','#d544f6','#f650ab'];

		/*iterate through all menu links and apply colors to border top */
		$menu_link.each(function(index){

					$menu_link.eq(index).css('border-color',$colour_arr[index]);

			});	

	/* all the magic happens here*/
	function init () {

		if($hovered_pos) {
				$span.css('left',$hovered_pos);
				var index = 0;
				/* search for the selected menu item*/
				for(i=0; i<$menu_link.length; i++) {
					if($($menu_link[i]).hasClass('hovered')) {
						index = i;
					}
				}
				$span.css('background',$colour_arr[index]);

		}
		/*mouseenter funtion*/
		$menu_link.each(
			function( intIndex ){
				$(this).on (
					"mouseenter",
						function(event){

							var x = $(this).position('#menu');
							x = x.left;

								$span.css('background',$colour_arr[intIndex]);

							$span.stop();
							$span.animate({

								left: x
							  },300);
						}
					);

				}
		 );
		/* mouseout function*/
		$menu_link.each(
			function( intIndex ){
				$(this).on (
					"mouseleave",
						function(event){
							$span.stop();
						var x = -100;
						if($hovered_pos) {
							x = $hovered_pos;
							var index = 0;
							for(i=0; i<$menu_link.length; i++) {
								if($($menu_link[i]).hasClass('hovered')) {
									index = i;
								}
							}
								$span.css('background',colour_arr[index]);

						} 

		  				$span.animate({

								left: x
							  },300);
						}
					);
				}
		 );
	}
	/* call/ init our function*/
	init();
});

Css

A simple css for our awesome menu

#menu { float: left; position: relative; top: 0; left: 0; overflow: hidden;}
#menu .colourful { display: block; position: absolute; background: #f0ad22; height: 38px; width: 85px; top: 4px; left: -100px; }
#menu ul { margin: 0; padding: 0; list-style: none; float: left; position: relative; top: 0; left: 0; z-index: 1; }
#menu li { float: left; margin: 0 1px 0 0; }
#menu a:link, #menu a:visited, #menu a:hover, #menu a:active { color: #000; text-align: center; display: block; border: solid; border-width: 4px 0 0; line-height: 40px; width: 85px; }
#menu li a:hover { text-decoration: none; color: #fff; text-shadow: 0 0 1px #999; }

That's it,hope you like it!

The article source:http://tutorialpot.com/2012/02/colorful-css-and-jquery-menu/