ArtShok. Сайтостроение и немного SEO

Уроки и примеры по CSS, jQuery. Советы по монетизации и продвижению сайтов


22 октября 2008

Меню на CSS+jQuery (гаражные двери)

Меню на css и jQuery

Не скажу что самый интересный и полезный пример, но при умелом обращении и тематичном дизайне будет как раз “в тему”. Каждый из пунктов меню как бы закрыт гаражной дверью, а при наведении курсора открывается.

Демо | Скачать

Нам потребуются всего три изображения:

1. Непосредственно графическое меню (оно будет идти фоном)

Пример меню на css и jQuery

2. “Двери”

Пример меню на css и jQuery

3. И, наконец, окно, которое послужит для нас фреймом

Пример меню на css и jQuery

Меню:

<ul id="menuback">
<li class="shutter" id="shutter1">
     <a class="link" href="#1">Link 1</a></li>
<li class="shutter" id="shutter2">
     <a class="link" href="#2">Link 2</a></li>
<li class="shutter" id="shutter3">
     <a class="link" href="#3">Link 3</a></li>
<li class="shutter" id="shutter4">
     <a class="link" href="#4">Link 4</a></li>
</ul>

Обычная семантическая верстка (не забываем про сео-оптимизацию ни на минуту), но с id и классами для каждой ссылки.

Файл стилей:

* { margin:0px; padding:0px; }
body { background:#c1c1c1; }
a { outline-style: none; }

ul#menuback {
margin: 50px auto;
list-style: none;
background: url(../images/menu-bg.jpg);
width: 800px;
overflow: auto;
}

ul#menuback li.shutter {
width: 200px;
height: 100px;
display: block;
float: left;
}

ul#menuback li#shutter1 {
background: url(../images/shutter-1.jpg) no-repeat;
}
ul#menuback li#shutter2 {
background: url(../images/shutter-2.jpg) no-repeat;
}
ul#menuback li#shutter3 {
background: url(../images/shutter-3.jpg) no-repeat;
}
ul#menuback li#shutter4 {
background: url(../images/shutter-4.jpg) no-repeat;
}

a.link {
   width: 200px;
   height: 100px;
   display: block;
   background: url(../images/window.png) no-repeat bottom center;
   text-indent: -9999px;
}

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

Фоновый рисунок присваиваем UL, устанавливаем высоту и ширину элементов списка, а затем приписываем для каждого из пунктов свой фон.

Последний этап - подключаем jQuery и JavaScript

<script type="text/javascript" src="js/jquery-1.2.6.min.js"></script>
<script type="text/javascript" src="js/jquery.backgroundPosition.js">
</script>

<script type="text/javascript">
$(document).ready(function() {

//Set css in Firefox (Required to use the backgroundPosition js)
$('#shutter1').css({backgroundPosition: '0px 0px'});
$('#shutter2').css({backgroundPosition: '0px 0px'});
$('#shutter3').css({backgroundPosition: '0px 0px'});
$('#shutter4').css({backgroundPosition: '0px 0px'});

//Animate the shutter
$(&quot;.link&quot;).hover(function(){
$(this).parent().animate({backgroundPosition: '(0px -100px)'}, 500 );
}, function() {
$(this).parent().animate({backgroundPosition: '(0px 0px)'}, 500 );
});
});
</script>

Сначала мы еще раз прописываем позицию фона, а затем действие при наведении курсора на элемент с классом link. Вот и все :) Удачи на практике!

Рекомендуемые статьи:

Обязательно к использованию:



Комментарии к этой записи


  1. увы, в IE6 не работает….

    [Ответить]


  2. Возможно ли на чистом CSS выполнить пропорциональный ресайз фоновой картинки, чтобы она всегда закрывала весь фон? Как здесь: http://www.alexandergusev.com/

    [Ответить]

    ArtShok:

    Ну так посмотрите, как там реализован фон и всего-то проблем

    [Ответить]

Оставить комментарий или два