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);
}