Quantcast
Channel: Depot webdesigner - Tutorials and more resources for webdesigner » clean
Viewing all articles
Browse latest Browse all 53

How to create a simple Lava Lamp Menu with jQuery

$
0
0

I will present in this article an example for how to create a menu with Lava Lamp jQuery .

Download
Demo

Code HTML:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"/>
	<title>Lava Lamp Menu Tutorial</title>
	<script type="text/javascript" src="js/jquery.js"></script>
	<script type="text/javascript" src="js/jquery.easing.1.3.js"></script>	
	<script type="text/javascript">

	$(document).ready(function () {

		//transitions
		//for more transition, goto http://gsgd.co.uk/sandbox/jquery/easing/
		var style = 'easeOutElastic';

		//Retrieve the selected item position and width
		var default_left = Math.round($('#lava li.selected').offset().left - $('#lava').offset().left);
		var default_width = $('#lava li.selected').width();

		//Set the floating bar position and width
		$('#box').css({left: default_left});
		$('#box .head').css({width: default_width});

		//if mouseover the menu item
		$('#lava li').hover(function () {
			
			//Get the position and width of the menu item
			left = Math.round($(this).offset().left - $('#lava').offset().left);
			width = $(this).width(); 
		$('#debug').html(left);
			//Set the floating bar position, width and transition
			$('#box').stop(false, true).animate({left: left},{duration:1000, easing: style});	
			$('#box .head').stop(false, true).animate({width:width},{duration:1000, easing: style});	
		
		//if user click on the menu
		}).click(function () {
			
			//reset the selected item
			$('#lava li').removeClass('selected');	
			
			//select the current item
			$(this).addClass('selected');
	
		});
		
		//If the mouse leave the menu, reset the floating bar to the selected item
		$('#lava').mouseleave(function () {

			//Retrieve the selected item position and width
			default_left = Math.round($('#lava li.selected').offset().left - $('#lava').offset().left);
			default_width = $('#lava li.selected').width();
			
			//Set the floating bar position, width and transition
			$('#box').stop(false, true).animate({left: default_left},{duration:1500, easing: style});	
			$('#box .head').stop(false, true).animate({width:default_width},{duration:1500, easing: style});		
			
		});
		
	});
	

	</script>

</head>
<body>
<div id="container">
<div id="lava">

	<ul>
		<li><a href="#">Home</a></li>
		<li><a href="#">Services</a></li>
		<li><a href="#">Portfolio</a></li>
		<li class="selected"><a href="#">About Us</a></li>
        <li class="selected"><a href="#">Contact</a></li>				
	</ul>

	<!-- If you want to make it even simpler, you can append these html using jquery -->
	<div id="box"><div class="head"></div></div>

</div>





</div>

</body>
</html>

Code CSS :

	body {
		font-family:"Trebuchet MS", Arial, Helvetica, sans-serif;
		font-size:15px; 
		background:#343434 url('images/background.jpg') repeat-x;
		text-align:center;
	}
	a {
		text-decoration:none; 
		color:white;
		font-weight:bold;
	}
	
	#lava {
		/* you must set it to relative, so that you can use absolute position for children elements */
		position:relative; 
		text-align:center; 
		width:583px; 
		height:40px;
	}
	
	#lava ul {
		/* remove the list style and spaces*/
		margin:0; 
		padding:0; 
		list-style:none; 
		display:inline;
				
		/* position absolute so that z-index can be defined */
		position:absolute; 
		
		/* center the menu, depend on the width of you menu*/
		left:110px; 
		top:10px; 
		
		/* should be higher than #box */
		z-index:100;

	}
	
	#lava ul li {
		
		/* give some spaces between the list items */
		margin:0 18px; 
		
		/* display the list item in single row */
		float:left;
	}
	
	#lava #box {
		
		/* position absolute so that z-index can be defined and able to move this item using javascript */
		position:absolute; 
		left:0; 
		top:0; 
		
		/* should be lower than the list menu */
		z-index:50; 

		/* image of the right rounded corner */
		background:url(images/pink/tail.jpg) no-repeat right center; 
		height:40px;
		
		/* add padding 8px so that the tail would appear */
		padding-right:18px;
		
		/* self-adjust negative margin to make sure the box display in the center of the item */
		margin-left:-15px;
	}
	
	#lava #box .head {
		/* image of the left rounded corner */
		background:url(images/pink/head.jpg) no-repeat 0 0; 
		height:40px;

		/* self-adjust left padding to make sure the box display in the center of the item */
		padding-left:10px;
	}
	
	
	#container {
		text-align:left;
		width:583px;
		margin:0 auto;	
	}

Simple Lava Lamp Menu Tutorial with jQuery from queness


Viewing all articles
Browse latest Browse all 53

Trending Articles