JQuery :: Красивая навигация с динамическим фоном
Сегодня мы создадим красивую навигацию, которая имеет фоновое изображение в виде слайд-шоу. Основная идея состоит в том, что меню состоит из трех основных пунктов, у каждого из которых имеется свое фоновое изображение. Каждый фон выполнен в виде анимированного слайда, чтобы создавать по-настоящему впечатляющий эффект. При этом сторона, с которой появится фоновое изображение зависит от того, где находится пункт меню и с какой стороны мы наводим на него мышью.
Кроме того, сверху фона будут расположены подменю, которые выполнены на полупрозрачном фоне трех разных цветов.
Также мы будем использовать Background-Position Animation Plugin, написанный Александром Фаркасом.
Фотографии, которые мы будем использовать взяты из B&W collection.
В скрипте будет немного CSS3, но оно не будет сказываться на поддержку кода браузерами. И вообще, кроссбраузерность у этого скрипта достаточно хорошо соблюдена. Он прекрасно работает в Google Chrome, Firefox, Opera, Safari, IE8, IE7 и даже в IE6.
Итак, давайте приступать к работе!
Разметка
The CSS
.menuWrapper{
font-family: "Trebuchet MS", Arial, sans-serif;;
font-size: 15px;
font-style: normal;
font-weight: normal;
text-transform:uppercase;
letter-spacing: normal;
line-height: 1.45em;
position:relative;
margin:20px auto;
height:542px;
width:797px;
background-position:0 0;
background-repeat:no-repeat;
background-color:transparent;
}
ul.menu{
list-style:none;
width:797px;
}
ul.menu > li{
float:left;
width:265px;
height:542px;
border-right:1px solid #777;
background-repeat:no-repeat;
background-color:transparent;
}
ul.menu > li.last{
border:none;
}
Селектор «>» применяется только к Li элементам первого слоя и не будет применяться ни к одномц из пунктов подменю. Мы присвоили последнему элементу Li класс «last», чтобы удалить правую границу. Следующие три класса определяют фоновые изображения:
.bg1{
background-image: url(../images/1.jpg);
}
.bg2{
background-image: url(../images/2.jpg);
}
.bg3{
background-image: url(../images/3.jpg);
}
Давайте определим связь элементов в списке первого слоя:
ul.menu > li > a{
float:left;
width:265px;
height:50px;
margin-top:450px;
text-align:center;
line-height:50px;
color:#ddd;
background-color:#333;
letter-spacing:1px;
cursor:pointer;
text-decoration:none;
text-shadow:0px 0px 1px #fff;
}
Чтобы разместить текст ссылки посередине мы должны задать высоту строки, равную высоте элемента.
ul.menu > li ul{
list-style:none;
float:left;
margin-top:-180px;
width:100%;
height:110px;
padding-top:20px;
background-repeat:no-repeat;
background-color:transparent;
}
Элементы li в подменю делаем невидимыми.
ul.menu > li ul li{
display:none;
}
Зададим стили для фоновых изображений подменю:
ul.menu > li ul.sub1{
background-image:url(../images/bg1sub.png);
}
ul.menu > li ul.sub2{
background-image:url(../images/bg2sub.png);
}
ul.menu > li ul.sub3{
background-image:url(../images/bg3sub.png);
}
Ссылки в элементах li будут иметь следующий стиль:
ul.menu > li ul li a{
color:#fff;
text-decoration:none;
line-height:30px;
margin-left:20px;
text-shadow:1px 1px 1px #444;
font-size:11px;
}
ul.menu > li ul li a:hover{
border-bottom:1px dotted #fff;
}
Список из первого подменю должен быть показан в самом начале:
ul.menu > li ul.sub1 li{
display:block;
}
Со стилями разобрались. Переходим к JS
The JavaScript
Сценарий скрипта прост как все гениальное – сначала мы проверяем откуда пришла мышка и делаем соответствующую анимацию фонового изображения основного меню, а затем и анимацию для фонового изображения подменю:
$(function() {
/* position of the
Ну вот и все. Пользуйтесь на здоровье!
Скачать файлы можно отсюда.
Посмотреть демо можно здесь.
Перевод сделан DJ_Petrovich’ем по материалам сайта tympanus.net