Открыть меню    

CSS3 Навигационное Меню. Анимация

css3 навигационное меню

Как вы уже слышали, CSS3 анимация – мощный инструмент, который позволяет создавать анимацию, не требующую дополнительного скриптинга на веб-странице. Более того, в следующем поколении браузеров будут еще более мощные инструменты, включая 3D трансформацию (которая уже представлена в Safari).

Но что мы имеем на сегодня? На текущий момент только три браузера могут работать с анимационными свойствами CSS - Chrome, Safari и Opera, они совокупности составляют существенную часть рынка браузеров. Ожидается, что вскоре к ним присоединиться Firefox, а с грядущим релизом IE9 (уже давно вышел) и вовсе становиться очевидно, что пора начинать пользоваться этой технологией.

Итак, сегодня мы переходим к практике и создадим простое анимированное CSS3 меню, грациозно деградирующее в старых браузерах и гарантированно работающее в новых.

Структура HTML навигационного меню

Меню организовано как неупорядоченный список. Такая структура меню является наиболее подходящей, так как позволяет легко менять стиль ссылок меню и является семантически правильной.

HTML

<ul id="navigationMenu">
    <li>
        <a class="home" href="#">
            <span>Home</span>
        </a>
    </li>
    <li>
        <a class="about" href="#">
            <span>About</span>
        </a>
    </li>
    <li>
         <a class="services" href="#">
            <span>Services</span>
         </a>
    </li>
    <li>
        <a class="portfolio" href="#">
            <span>Portfolio</span>
        </a>
    </li>
    <li>
        <a class="contact" href="#">
            <span>Contact us</span>
        </a>
    </li>
</ul>

Внутри каждого тега li находится гиперссылка (a), содержащая тег span. По умолчанию элементы span спрятаны и становятся видны только в случаи наведения на них курсора мышки. Каждая ссылка имеет уникальный класс, используемый для того, чтобы придать ей уникальный фон и разработать дизайн внутреннего элементаspan, как вы сейчас увидите.

Структура CSS навигационного меню

После того как создана базовая структура, можно переходить к созданию причудливых CSS3 эффектов и дизайна. Они будут работать и на браузерах, которые не поддерживают переходы анимации CSS3 (а это все браузеры, за исключением Chrome, Safari and Opera, на момент написания статьи) хотя и с меньшей помпой. Меню превосходно работает даже в таких старых браузерах как IE6.

CSS

*{
    /* Сброс стилей CSS  */
    margin:0;
    padding:0;
}
body{
    font-size:14px;
    color:#666;
    background:#111 no-repeat;
 
    /* CSS3 радиальный градиент */
    background-image:-moz-radial-gradient(center -100px 45deg, circle farthest-corner, #444 150px, #111 300px);
    background-image:-webkit-gradient(radial, 50% 0, 150, 50% 0, 300, from(#444), to(#111));
    font-family:Arial, Helvetica, sans-serif;
}
#navigationMenu li{
    list-style:none;
    height:39px;
    padding:2px;
    width:40px;
}

Для фона страницы я сначала задал цвет фона, а затем добавил два CSS3 радиальных градиента (для Firefox и Chrome/Safari соответственно), как фоновые изображения. Если браузер пользователя не поддерживает градиенты (плавно меняющееся по насыщенности цвета), он будет игнорировать значения для градиента и отобразит одноцветный фон.

Мы используем идентификатор - #navigationMenu, чтобы избежать противоречий с вашими персональными стилевыми правилами (конечно,если вы решите установить данное меню на вашем сайте).

CSS - Часть2

#navigationMenu span{
    /* Свойства контейнера*/
    width:0;
    left:38px;
    padding:0;
    position:absolute;
    overflow:hidden;
 
    /* Текстовые свойства */
    font-family:'Myriad Pro',Arial, Helvetica, sans-serif;
    font-size:18px;
    font-weight:bold;
    letter-spacing:0.6px;
    white-space:nowrap;
    line-height:39px;
 
    /* CSS3 Transition (переход): */
    -webkit-transition: 0.25s;
 
    /* Future proofing (these do not work yet): */
    -moz-transition: 0.25s;
    transition: 0.25s;
}
 
#navigationMenu a{
    /* Спрайт для фона: */
    background:url('img/navigation.jpg') no-repeat;
    height:39px;
    width:38px;
    display:block;
    position:relative;
}
/* Основные стили под hover эффект */
#navigationMenu a:hover span{
 width:auto;
 padding:0 20px;
 overflow:visible;
}
#navigationMenu a:hover{
    text-decoration:none;
    /* CSS outer glow with the box-shadow property */
    -moz-box-shadow:0 0 5px #9ddff5;
    -webkit-box-shadow:0 0 5px #9ddff5;
    box-shadow:0 0 5px #9ddff5;
}

Свойство перехода (transition) одно сильнейших достоинств CSS3. Оно позволяет анимировать перемены, которые случаются с элементом при вступлении в силу псевдо-свойств. Например, у нас, когда пользователь наводит курсор на ссылку навигации, вступает в силу:hover (псевдо-свойство выделение), показывая span который в обычном состоянии спрятан.

Без определения свойства перехода изменения мгновенны. Однако с переходом мы можем анимировать их. На нашем примере мы сообщаем браузеру, что продолжительность анимации составит 250 миллисекунд. Также можно выборочно указать, какие свойства будут анимированы, а не использовать все.

Переходы (transition) в настоящее время поддерживаются браузерами на основе webkit (Safari and Chrome), однако ожидается, что следующая версия Firefox также будет поддерживать их, поэтому мы создаем скрипт с расчетом на будущее, указывая -moz-transition.

CSS - Часть3

/* Зеленая кнопка */
 
#navigationMenu .home { background-position:0 0;}
#navigationMenu .home:hover {   background-position:0 -39px;}
#navigationMenu .home span{
    background-color:#7da315;
    color:#3d4f0c;
    text-shadow:1px 1px 0 #99bf31;
}
 
/* Синяя кнопка */
 
#navigationMenu .about { background-position:-38px 0;}
#navigationMenu .about:hover { background-position:-38px -39px;}
#navigationMenu .about span{
    background-color:#1e8bb4;
    color:#223a44;
    text-shadow:1px 1px 0 #44a8d0;
}
 
/* Оранжевая кнопка */
 
#navigationMenu .services { background-position:-76px 0;}
#navigationMenu .services:hover { background-position:-76px -39px;}
#navigationMenu .services span{
    background-color:#c86c1f;
    color:#5a3517;
    text-shadow:1px 1px 0 #d28344;
}
 
/* Желтая кнопка */
 
#navigationMenu .portfolio { background-position:-114px 0;}
#navigationMenu .portfolio:hover{ background-position:-114px -39px;}
#navigationMenu .portfolio span{
    background-color:#d0a525;
    color:#604e18;
    text-shadow:1px 1px 0 #d8b54b;
}
 
/* Розовая кнопка */
 
#navigationMenu .contact { background-position:-152px 0;}
#navigationMenu .contact:hover { background-position:-152px -39px;}
#navigationMenu .contact span{
    background-color:#af1e83;
    color:#460f35;
    text-shadow:1px 1px 0 #d244a6;
}

В последней части таблицы стилей мы оформляем дизайн для каждой из пяти основных ссылок навигации. Все фоновые изображения для ссылок содержаться в единственном спрайт-файле. Они имеют как нормальное, так и выделенное (hover) состояние, одно расположенное под другим. Когда происходит наведение курсора на ссылку (hover), фон смещается, чтобы показать подходящее фонового изображения.

В скачиваемый архив включен PSD файл, поэтому можете редактировать изображения на свое усмотрение.

На этом создание нашего минимизированного навигационного CSS3 меню закончено.

Рано или поздно будет быстрый доступ к мощной, поддерживаемой железом графике прямо через браузер. С приходом этого дня для веб-разработчиков откроется новый мир, и мы еще ближе подойдем к созданию насыщенных интернет приложений, работающих так же, как и родные.

Пока же нужно работать с тем, что есть и начинать адаптировать приемы CSS3 в нашей работе.

Комментарии к статье

Добавить комментарий