519 Menu & Nav

Разноцветное jQuery меню


Красочное горизонтальное jQuery меню. При перемещении куросра по пунктам меню за ним будет двигаться прямоугольник заданного цвета, чем то напоминает меню в стиле лава ламп.

HTML

      <div id="menu">
        <ul>
          <li>
            <a href="">Веб-дизайн</a>
          </li>
          <li>
            <a href="">jQuery</a>
          </li>
          <li>
            <a href="">Html5 и Css3</a>
          </li>
          <li>
            <a href="">PHP</a>
          </li>
          <li>
            <a href="">Photoshop</a>
          </li>
          <li>
            <a href="">Illustrator</a>
          </li>
          <li>
            <a href="">Wordpress</a>
          </li>
          <li>
            <a href="">Статьи</a>
          </li>
          <li>
            <a href="">vBulletin</a>
          </li>
        </ul>
      </div>

CSS

#menu { 
     float: left;
     position: relative; 
     top: 0; 
     left: 0; 
     overflow: hidden;
     }
#menu .colourful {
     display: block;
     position: absolute;
     background: #f0ad22; 
     height: 38px;
     width: 85px; 
     top: 4px; 
     left: -100px;
     }
#menu ul { 
     margin: 0; 
     padding: 0;
     list-style: none;
     float: left; 
     position: relative;
     top: 0; 
     left: 0;
     z-index: 1; 
     }
#menu li {
      float: left;
      margin: 0 1px 0 0;
      }
#menu a:link, #menu a:visited, #menu a:hover, #menu a:active { 
     color: #000; 
     text-align: 
     center; display:block;
     border:solid; 
     border-width:4px 0 0; 
     line-height: 40px;
     width: 85px;
     }
#menu li a:hover {
     text-decoration: none;
     color: #fff;
     text-shadow: 0 0 1px #999; 
     }

JS

Подключаем jQuery и плагин easing эффектов:

        <script type="text/jаvascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
        <script type="text/jаvascript" src="js/easing.js"></script>

Скрипт осуществляющий анимацию цветов и фона init.js:

jQuery(document).ready(function($) {
    
    /*define easing you can omit this if 
    you don't want to use the easing plugin*/
jQuery.easing.def = "easeInOutBack";    
    /* create the span tht will be animated across the menu*/
    /* declare our many variables for easy ref*/
        var $span = $('<span class="colourful"></span>');
        $span.insertBefore($("#menu ul"));
        
        var $menu_link = $('#menu li a'),
        $hovered =  $('#menu a.hovered'),/**/
        $hovered_pos = $hovered.position('#menu');/*position of hovered menu item*/
        
        /* declare our many colors that can confuse a chameleon*/
        var $colour_arr = ['#fbb92e','#f8d52f','#b4f62f','#54f7a8','#3ff7f3','#3a97fa','#6835f9','#d544f6','#f650ab'];
        
        /*iterate through all menu links and apply colors to border top */
        $menu_link.each(function(index){
            
                    $menu_link.eq(index).css('border-color',$colour_arr[index]);
                
            });    
            
    /* all the magic happens here*/
    function init () {
        
        if($hovered_pos) {
                $span.css('left',$hovered_pos);
                var index = 0;
                /* search for the selected menu item*/
                for(i=0; i<$menu_link.length; i++) {
                    if($($menu_link).hasClass('hovered')) {
                        index = i;
                    }
                }
                $span.css('background',$colour_arr[index]);
                
        }
        
        /*mouseenter funtion*/
        $menu_link.each(
            function( intIndex ){
                $(this).on (
                    "mouseenter",
                        function(event){
                            
                            var x = $(this).position('#menu');
                            x = x.left;
                            
                                $span.css('background',$colour_arr[intIndex]);
                            
                            $span.stop();
                            $span.animate({
                                
                                left: x
                              },600);
                        }
                    );
         
                }
         );
         
        /* mouseout function*/
        $menu_link.each(
            function( intIndex ){
                $(this).on (
                    "mouseleave",
                        function(event){
                            $span.stop();
                        var x = -100;
                        if($hovered_pos) {
                            x = $hovered_pos;
                            var index = 0;
                            for(i=0; i<$menu_link.length; i++) {
                                if($($menu_link).hasClass('hovered')) {
                                    index = i;
                                }
                            }
                                $span.css('background',colour_arr[index]);
                            
                        } 
                        
                          $span.animate({
                                
                                left: x
                              },600);
                        }
                    );
                }
         );
    }
    /* call init our function*/
    init();
});
Скачать 782Загрузок 22,15 Kb
Демо

Комментарии

  • Facebook
  • Вконтакте

Похожие статьи