Как создать красивое меню для сайта
Меню для сайта является, пожалуй, самой важной частью в структуре любого сайта, а красивое меню позволяет осуществлять навигацию по сайту при этом радовать взор посетителей ресурса. В сегодняшнем уроке мы расскажем как сделать красивое меню, с простой анимацией и некоторыми эффектами с помощью технологий CSS3. Несомненно, что особенности CSS3 (трансформации и анимации) позволяют придать дизайну проекта более утонченный вид. Вот что у нас с этого получается..
Вы можете найти много интересных материалов для себя, а также бесплатные шаблоны и не только у наших партнеров ниже, попробуйте и не пропустите интересные предложения:
Недавно мы публиковали пост, о том как создать подобное меню, но без различных эффектов.
Структура HTML кода для меню используется стандартная для таких случаев:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<ul id="menu"> <li><a href="/">Главная</a></li> <li> <a href="">Навигация</a> <ul> <li><a href="">CSS</a></li> <li><a href="">Графический дизайн</a></li> <li><a href="">Инструментарий</a></li> <li><a href="">Веб дизайн</a></li> </ul> </li> <li><a href="">Проекты</a></li> <li><a href="">О нас</a></li> <li><a href="">Контакты</a></li> </ul> |
Как можно заметить, разметка не сложная, в ней мы используем простой класс li.
Следующим шагом будет создание стилей CSS, выполняем сброс для элемента ul
:
1 2 3 4 5 |
#menu, #menu ul { margin: 0; padding: 0; list-style: none; } |
Элемент #menu
является основным для нашего меню. Градиенты, тени и скругленные углы помогут нам создать следующее оформление для него:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
#menu { width: 960px; margin: 60px auto; border: 1px solid #222; background-color: #111; background-image: -moz-linear-gradient(#444, #111); background-image: -webkit-gradient(linear, left top, left bottom, from(#444), to(#111)); background-image: -webkit-linear-gradient(#444, #111); background-image: -o-linear-gradient(#444, #111); background-image: -ms-linear-gradient(#444, #111); background-image: linear-gradient(#444, #111); -moz-border-radius: 6px; -webkit-border-radius: 6px; border-radius: 6px; -moz-box-shadow: 0 1px 1px #777; -webkit-box-shadow: 0 1px 1px #777; box-shadow: 0 1px 1px #777; } |
Отключаем обтекание:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#menu:before, #menu:after { content: ""; display: table; } #menu:after { clear: both; } #menu { zoom:1; } |
Теперь оформим элементы списка:
Обратите внимание на селектор #menu li:hover > a
. Он работает следующим образом: выбрать элемент “a”, который является потомком элемента “li” ; элемент “li” должен иметь предка “#menu”.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
#menu li { float: left; border-right: 1px solid #222; -moz-box-shadow: 1px 0 0 #444; -webkit-box-shadow: 1px 0 0 #444; box-shadow: 1px 0 0 #444; position: relative; } #menu a { float: left; padding: 12px 30px; color: #999; text-transform: uppercase; font: bold 12px Arial, Helvetica; text-decoration: none; text-shadow: 0 1px 0 #000; } #menu li:hover > a { color: #fafafa; } *html #menu li a:hover { /* Только для IE6 */ color: #fafafa; } |
С помощью трансформаций CSS3 мы можем анимировать изменения свойств CSS, таких как margin
или opacity
. Воспользуемся данной возможностью для оформления эффектного появления подменю:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
#menu ul { margin: 20px 0 0 0; _margin: 0; /*IE6 only*/ opacity: 0; visibility: hidden; position: absolute; top: 38px; left: 0; z-index: 9999; background: #444; background: -moz-linear-gradient(#444, #111); background: -webkit-gradient(linear,left bottom,left top,color-stop(0, #111),color-stop(1, #444)); background: -webkit-linear-gradient(#444, #111); background: -o-linear-gradient(#444, #111); background: -ms-linear-gradient(#444, #111); background: linear-gradient(#444, #111); -moz-box-shadow: 0 -1px rgba(255,255,255,.3); -webkit-box-shadow: 0 -1px 0 rgba(255,255,255,.3); box-shadow: 0 -1px 0 rgba(255,255,255,.3); -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; -webkit-transition: all .2s ease-in-out; -moz-transition: all .2s ease-in-out; -ms-transition: all .2s ease-in-out; -o-transition: all .2s ease-in-out; transition: all .2s ease-in-out; } #menu li:hover > ul { opacity: 1; visibility: visible; margin: 0; } #menu ul ul { top: 0; left: 150px; margin: 0 0 0 20px; _margin: 0; /*IE6 only*/ -moz-box-shadow: -1px 0 0 rgba(255,255,255,.3); -webkit-box-shadow: -1px 0 0 rgba(255,255,255,.3); box-shadow: -1px 0 0 rgba(255,255,255,.3); } #menu ul li { float: none; display: block; border: 0; _line-height: 0; /*IE6 only*/ -moz-box-shadow: 0 1px 0 #111, 0 2px 0 #666; -webkit-box-shadow: 0 1px 0 #111, 0 2px 0 #666; box-shadow: 0 1px 0 #111, 0 2px 0 #666; } #menu ul li:last-child { -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none; } #menu ul a { padding: 10px; width: 130px; _height: 10px; /*IE6 only*/ display: block; white-space: nowrap; float: none; text-transform: none; } #menu ul a:hover { background-color: #0186ba; background-image: -moz-linear-gradient(#04acec, #0186ba); background-image: -webkit-gradient(linear, left top, left bottom, from(#04acec), to(#0186ba)); background-image: -webkit-linear-gradient(#04acec, #0186ba); background-image: -o-linear-gradient(#04acec, #0186ba); background-image: -ms-linear-gradient(#04acec, #0186ba); background-image: linear-gradient(#04acec, #0186ba); } |
Теперь займемся первым и последним пунктом в списке подменю:
Теперь jQuery. IE6 требует дополнительных действий:
1 2 3 4 5 6 7 8 9 10 |
$(function() { if ($.browser.msie && $.browser.version.substr(0,1)<7) { $('li').has('ul').mouseover(function(){ $(this).children('ul').css('visibility','visible'); }).mouseout(function(){ $(this).children('ul').css('visibility','hidden'); }) } }); |
Если вы хотите быстро приступить к работе над своим будущим сайтом, то вам могут понадобиться русифицированные готовые шаблоны. Как нельзя кстати, на маркетплейсе TemplateMonster появилась новая категория шаблонов, которая будет пополнятся все новыми и новыми решениями. В ней вы найдете десятки HTML шаблонов на русском языке, которые разработаны для различных бизнес-ниш и тематик. Все они порадуют отличным визуальным редактором, который сэкономит уйму времени на персонализации онлайн-проекта. Вас также должны порадовать отличные изображения, которые включены в пакет данных шаблонов.
Так как псевдо-класс :hover
не работает в других элементах, кроме ссылки, нужно добавить небольшой код jQuery для устранения проблемы. Материал взят из зарубежного источника. И представлен исключительно в ознакомительных целях.
Читайте также:
Опубликовал Cooper 08.11.2011 в 21:22, в категории CSS. Вы можете следить за комментариями через RSS 2.0. Вы можете перейти в конец записи и оставить комментарий. Пинги запрещены. |