HTML is very simple, just a list of links.
CSS is little bit complicated this time, therefore, I have put a lot of comments. I hope it will explain everything you need to know.
body {
background:#222;
}
#navMenu {
margin:0;
padding:0;
list-style:none;
font-family:arial;
text-align:center;
line-height:60px;
}
#navMenu li {
float:left;
/* default background image */
background:url(default.jpg) no-repeat center center;
/* width and height of the menu item */
width:120px;
height:70px;
/* simulate pixel perfect using border */
border-left:1px solid #111;
border-right:1px solid #333;
border-top:1px solid #555;
border-bottom:1px solid #333;
/* must set it as relative, because .hover class top and left with absolute position will be positioned according to li. */
position:relative;
}
#navMenu li a {
/* z-index must be higher than .hover class */
z-index:20;
/* display as block and set the height according to the height of the menu to make the whole LI clickable */
display:block;
height:70px;
position:relative;
color:#777;
}
#navMenu li .hover {
/* mouseover image */
background:url(over.jpg) no-repeat center center;
/* must be postion absolute */
position:absolute;
/* width, height, left and top to fill the whole LI item */
width:120px;
height:70px;
left:0;
top:0;
/* display under the Anchor tag */
z-index:0;
/* hide it by default */
display:none;
}
#navMenu li.selected {
/* selected image */
background:url(selected.jpg) no-repeat center center;
}
Javascript
We are using the jQuery built-in fade in and face out effect. First of all, we need to append the div.hover to the list. After that, just a normal mouse hover event with the fadein and fadeout transition.
$(document).ready(function () {
//Append a div with hover class to all the LI
$('#navMenu li').append('');
$('#navMenu li').hover(
//Mouseover, fadeIn the hidden hover class
function() {
$(this).children('div').fadeIn('1000');
},
//Mouseout, fadeOut the hover class
function() {
$(this).children('div').fadeOut('1000');
}).click (function () {
//Add selected class if user clicked on it
$(this).addClass('selected');
});
});