Create an Attractive jQuery Menu with Fadein and Fadeout Effect

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');
         
    });
 
});
150 150 Burnignorance | Where Minds Meet And Sparks Fly!