Динамичное меню

Меню с эффектом волны для пунктов. При наведении курсора, элемент отодвигается вправо. Незатейливо, но сипатично.

Разметка HTML

            <ul id="sliding-navigation">
                <li class="sliding-element"><h3>Навигация</h3></li>
                <li class="sliding-element"><a href="#">Главная</a></li>
                <li class="sliding-element"><a href="#">Форум</a></li>
                <li class="sliding-element"><a href="#">Портфолио</a></li>
                <li class="sliding-element"><a href="#">Контакты</a></li>
                <li class="sliding-element"><a href="#">О нас</a></li>
            </ul>

CSS

#navigation-block {
    position:relative;
    top:100px;
}

#hide {
    position:absolute;
    top:30px;
    left:-190px;
}

ul#sliding-navigation
{
    list-style: none;
    font-size: .75em;
    margin: 30px 0;
    padding: 0;
}

ul#sliding-navigation li.sliding-element h3,
ul#sliding-navigation li.sliding-element a
{
    display: block;
    width: 150px;
    padding: 5px 18px;
    margin: 0;
    margin-bottom: 5px;
}

ul#sliding-navigation li.sliding-element h3
{
    color: #fff;
    background:#333 url(heading_bg.jpg) repeat-y;
    font-weight: normal;
}

ul#sliding-navigation li.sliding-element a
{
    color: #999;
    background:#222 url(tab_bg.jpg) repeat-y;
    border: 1px solid #1a1a1a;
    text-decoration: none;
}

ul#sliding-navigation li.sliding-element a:hover { color: #ffff66; }

javascript

Подключаем jQuery библиотеку и реализуем эффект слайда для меню:

$(document).ready(function()
{
    slide("#sliding-navigation", 25, 15, 150, .8);
});

function slide(navigation_id, pad_out, pad_in, time, multiplier)
{
    // creates the target paths
    var list_elements = navigation_id + " li.sliding-element";
    var link_elements = list_elements + " a";
   
    // initiates the timer used for the sliding animation
    var timer = 0;
   
    // creates the slide animation for all list elements
    $(list_elements).each(function(i)
    {
        // margin left = - ([width of element] + [total vertical padding of element])
        $(this).css("margin-left","-180px");
        // updates timer
        timer = (timer*multiplier + time);
        $(this).animate({ marginLeft: "0" }, timer);
        $(this).animate({ marginLeft: "15px" }, timer);
        $(this).animate({ marginLeft: "0" }, timer);
    });

    // creates the hover-slide effect for all link elements        
    $(link_elements).each(function(i)
    {
        $(this).hover(
        function()
        {
            $(this).animate({ paddingLeft: pad_out }, 150);
        },       
        function()
        {
            $(this).animate({ paddingLeft: pad_in }, 150);
        });
    });
}

Эффект запускается с помощью функции:

  • slide(navigation_id, pad_out, pad_in, time, multiplier)
  • navigation_id — ID контейнера, в котором данный эффект будет использоваться
  • pad_out — основной отступ меню в состоянии покоя
  • pad_in — отступ при наведении курсора на меню
  • time — время «выпрыгивания» меню при загрузке страницы
  • multiplier — скорость анимации

СКАЧАТЬСкачек: 831
2,39 Kb
Кто скачал?

ДЕМОПосмотреть
пример