riot-menu

by jpeter06

HTML

<riot-menu>
 <ul id="menu">
    <li >Home</li>
    <li >Buy Tickets</li>
    <li class="focused">Videos</li>
    <li >Photos</li>
    <li >Magic Shop</li>
 </ul>
</riot-menu>

CSS

body{
    background: #5ae;
}
.nav-wrap {
    margin: 10px auto;
}

riot-menu ul { margin: 0 auto; list-style: none; position: relative; }
riot-menu ul li { display: inline-block;font-size: 14px; padding: 6px 10px 4px 10px; text-decoration: none; text-transform: uppercase; color: #eee;
cursor:pointer;}
riot-menu ul li:hover { color: white; }
#magic-line { position: absolute; bottom: -4px; transition:background 1s;
     left: 0; width: 100px; height: 2px;  z-index:-1}

riot-menu{
                display:block;
				position: fixed;
				height:60px;
				width:100%;
				top:0px;
                margin: 10px auto;
			}

JavaScript

$(function() {
    var $el, leftPos, newWidth,
        $mainNav = $("#menu");
    
    $mainNav.append("<li id='magic-line'></li>");
    var $magicLine = $("#magic-line");
	resetMenu();
    $magicLine
        .width($(".focused").width())
        .css("left", $(".focused").position().left)
   		 .height($mainNav.height());
        
     
    $("#menu li").hover(function() {
        $el = $(this);
        leftPos = $el.position().left;
        newWidth = $el.width();
        color = getColor($( "li" ).index($el));
        $magicLine.css('background-color', color);
        $magicLine.stop().animate({
            left: leftPos,
            width: newWidth
        });
    }, function() {
        var index=$( "#menu li" ).index($(".focused"));
        var origColor=getColor(index);
        $magicLine.css('background-color', origColor);
        $magicLine.stop().animate({
            left: $magicLine.data("origLeft"),
            width: $magicLine.data("origWidth")
        });    
    });
    
    $('#menu li').on('click',function(){
        $('#menu .focused').removeClass("focused");
        $(this).addClass("focused");
        resetMenu();
    });
});

function getColor(index){
	var colores=["#fe4902","#A41322","#C6AA01","#D40229","#98CEAA","#1B9B93","#8DC91E"];
    return colores[index];
}
function resetMenu(){
    var index=$( "#menu li" ).index($("#menu .focused"));
    var $selected=$("#menu .focused");
    var color=getColor(index);
    var $magicLine = $("#magic-line");
    $magicLine.css('background-color', color)
        .data("origLeft", $selected.position().left)
        .data("origWidth", $selected.width())
    	.data("origColor", color);
}