Создание меню на CSS
28 декабря 2012 | Опубликовано в css | 4 Комментариев »
В этом уроке мы будем создавать два типа меню: вертикальные кроссбраузерное CSS3-меню с 3D-анимацией (используя CSS3-переходы и свойства трансформации), а также меню с LavaLamp-эффектом.
Давайте посмотрим на образцы меню, которые мы будем создавать:
CSS3 vertical multicolor 3D menu:
Pure CSS3 LavaLamp Menu
CSS3 vertical multicolor 3D menu
Шаг 1. HTML
Начинаем с HTML. Ниже приведен HTML-код нашего меню. Как обычно, это навигационное меню на основе UL-LI. Конечно, самое интересное — это CSS-стили.
<div class="container"> <span id="clr1"></span> <span id="clr2"></span> <span id="clr3"></span> <span id="clr4"></span> <span id="clr5"></span> <span id="clr6"></span> <div class="colorScheme"> <a href="#clr1" class="clr1"></a> <a href="#clr2" class="clr2"></a> <a href="#clr3" class="clr3"></a> <a href="#clr4" class="clr4"></a> <a href="#clr5" class="clr5"></a> <a href="#clr6" class="clr6"></a> </div> <ul id="nav"> <li><a href="http://www.script-tutorials.com/">Home</a></li> <li><a href="#">Menu 1</a> <ul class="subs"> <li><a href="#">Submenu 1</a></li> <li><a href="#">Submenu 2</a></li> <li><a href="#">Submenu 3</a></li> <li><a href="#">Submenu 4</a></li> <li><a href="#">Submenu 5</a></li> </ul> </li> <li><a href="#">Menu 2</a> <ul class="subs"> <li><a href="#">Submenu 2-1</a></li> <li><a href="#">Submenu 2-2</a></li> <li><a href="#">Submenu 2-3</a></li> <li><a href="#">Submenu 2-4</a></li> <li><a href="#">Submenu 2-5</a></li> <li><a href="#">Submenu 2-6</a></li> <li><a href="#">Submenu 2-7</a></li> <li><a href="#">Submenu 2-8</a></li> </ul> </li> <li><a href="#">Menu 3</a> <ul class="subs"> <li><a href="#">Submenu 3-1</a></li> <li><a href="#">Submenu 3-2</a></li> <li><a href="#">Submenu 3-3</a></li> <li><a href="#">Submenu 3-4</a></li> <li><a href="#">Submenu 3-5</a></li> </ul> </li> <li><a href="#">Menu 4</a></li> <li><a href="#">Menu 5</a></li> <li><a href="#">Menu 6</a></li> <li><a href="http://www.script-tutorials.com/css3-vertical-multicolor-3d-menu/">Back</a></li> </ul> </div>
Шаг 2. CSS
Вот CSS -стили нашего вертикального меню. Возможно, вы заметили, — что в нашем HTML у нас есть два CSS файла: layout.css и menu.css. Первый (layout.css) содержит стилях нашей демо -страницы. Эти стили в статье публиковать не будем, но если вам интересно — их можно найти в архиве.
CSS / menu.css
#nav,#nav ul { background-color: #8899AA; list-style: none outside none; margin: 0; padding: 0; } #nav { display: block; padding: 5px; position: relative; width: 112px; -moz-perspective: 200px; -ms-perspective: 200px; -webkit-perspective: 200px; -o-perspective: 200px; perspective: 200px; } #nav ul { left: -9999px; opacity:0; overflow: hidden; padding: 5px; position: absolute; top: -9999px; -moz-transform: rotateY(70deg); -ms-transform: rotateY(70deg); -o-transform: rotateY(70deg); -webkit-transform: rotateY(70deg); transform: rotateY(70deg); -moz-transform-origin: 0 0; -ms-transform-origin: 0 0; -o-transform-origin: 0 0; -webkit-transform-origin: 0 0; transform-origin: 0 0; -moz-transition: -moz-transform 0.3s linear, opacity 0.3s linear; -ms-transition: -ms-transform 0.3s linear, opacity 0.3s linear; -o-transition: -o-transform 0.3s linear, opacity 0.3s linear; -webkit-transition: -webkit-transform 0.3s linear, opacity 0.3s linear; transition: transform 0.3s linear, opacity 0.3s linear; } #nav li { background-color: #FFFFFF; position: relative; } #nav > li { -moz-transform-style: preserve-3d; -ms-transform-style: preserve-3d; -o-transform-style: preserve-3d; -webkit-transform-style: preserve-3d; transform-style: preserve-3d; } #nav li a { background-color: #AABBCC; border-color: #DDDDDD #555555 #555555 #DDDDDD; border-style: solid; border-width: 1px; color: #000000; display: block; font-size: 15px; padding: 8px 10px 8px 5px; text-decoration: none; width:95px; -moz-transition: all 0.2s linear; -ms-transition: all 0.2s linear; -o-transition: all 0.2s linear; -webkit-transition: all 0.2s linear; transition: all 0.2s linear; } #nav li:hover > a { background-color: #8899AA; border-color: #8899AA; color: #FFFFFF; } #nav li:hover ul.subs { left: 114px; opacity:1; top: 0; -moz-transition-delay: 0.3s; -ms-transition-delay: 0.3s; -o-transition-delay: 0.3s; -webkit-transition-delay: 0.3s; transition-delay: 0.3s; -moz-transform: rotateY(0deg); -ms-transform: rotateY(0deg); -o-transform: rotateY(0deg); -webkit-transform: rotateY(0deg); transform: rotateY(0deg); } #nav ul li { width: 100%; } /* colors */ .colorScheme { list-style: none outside none; overflow: hidden; width: 120px; } .colorScheme a { cursor: pointer; float: left; height: 30px; margin: 0 5px 5px; width: 30px; } .colorScheme .clr1 { background-color: #8899AA; } .colorScheme .clr2 { background-color: #aa889e; } .colorScheme .clr3 { background-color: #8f88aa; } .colorScheme .clr4 { background-color: #88aaaa; } .colorScheme .clr5 { background-color: #88aa8a; } .colorScheme .clr6 { background-color: #aaa188; } #clr1:target ~ #nav, #clr1:target ~ #nav ul { background-color: #8899AA; } #clr2:target ~ #nav, #clr2:target ~ #nav ul { background-color: #aa889e; } #clr3:target ~ #nav, #clr3:target ~ #nav ul { background-color: #8f88aa; } #clr4:target ~ #nav, #clr4:target ~ #nav ul { background-color: #88aaaa; } #clr5:target ~ #nav, #clr5:target ~ #nav ul { background-color: #88aa8a; } #clr6:target ~ #nav, #clr6:target ~ #nav ul { background-color: #aaa188; } #clr1:target ~ #nav li:hover > a { background-color: #8899AA; border-color: #8899AA; } #clr2:target ~ #nav li:hover > a { background-color: #aa889e; border-color: #aa889e; } #clr3:target ~ #nav li:hover > a { background-color: #8f88aa; border-color: #8f88aa; } #clr4:target ~ #nav li:hover > a { background-color: #88aaaa; border-color: #88aaaa; } #clr5:target ~ #nav li:hover > a { background-color: #88aa8a; border-color: #88aa8a; } #clr6:target ~ #nav li:hover > a { background-color: #aaa188; border-color: #aaa188; }
Pure CSS3 LavaLamp Menu
Наверное, вы уже видели анимационные меню с LavaLamp-эффектом ( на основе плагина JQuery). Но в этом уроке мы повторим это при помощи CSS3 (без JavaScript). В нашем меню мы будем использовать CSS3-переходы ( для анимации элементов). Итак, давайте начнем.
Шаг 1. HTML
Как обычно, начинаем с HTML. Вот HTML-код нашего меню. Это опять меню на основе UL и LI.
index.html
<ul id="nav"> <li><a href="http://www.script-tutorials.com/">Home</a></li> <li><a class="hsubs" href="#">Menu 1</a> <ul class="subs"> <li><a href="#">Submenu 1</a></li> <li><a href="#">Submenu 2</a></li> <li><a href="#">Submenu 3</a></li> <li><a href="#">Submenu 4</a></li> <li><a href="#">Submenu 5</a></li> </ul> </li> <li><a class="hsubs" href="#">Menu 2</a> <ul class="subs"> <li><a href="#">Submenu 2-1</a></li> <li><a href="#">Submenu 2-2</a></li> <li><a href="#">Submenu 2-3</a></li> <li><a href="#">Submenu 2-4</a></li> <li><a href="#">Submenu 2-5</a></li> <li><a href="#">Submenu 2-6</a></li> <li><a href="#">Submenu 2-7</a></li> <li><a href="#">Submenu 2-8</a></li> </ul> </li> <li><a class="hsubs" href="#">Menu 3</a> <ul class="subs"> <li><a href="#">Submenu 3-1</a></li> <li><a href="#">Submenu 3-2</a></li> <li><a href="#">Submenu 3-3</a></li> <li><a href="#">Submenu 3-4</a></li> <li><a href="#">Submenu 3-5</a></li> </ul> </li> <li><a href="#">Menu 4</a></li> <li><a href="#">Menu 5</a></li> <li><a href="#">Menu 6</a></li> <li><a href="http://www.script-tutorials.com/pure-css3-lavalamp-menu/">Back</a></li> <div id="lavalamp"></div> </ul>
Шаг 2. CSS
Вот CSS-стили нашего LavaLamp-меню.
CSS / menu.css
#nav,#nav ul { list-style: none outside none; margin: 0; padding: 0; } #nav { background: url('menu_bg.png') no-repeat scroll 0 0 transparent; clear: both; font-size: 12px; height: 58px; padding: 0 0 0 9px; position: relative; width: 957px; } #nav ul { background-color: #222; border:1px solid #222; border-radius: 0 5px 5px 5px; border-width: 0 1px 1px; box-shadow: 0 5px 5px rgba(0, 0, 0, 0.5); left: -9999px; overflow: hidden; position: absolute; top: -9999px; z-index: 2; -moz-transform: scaleY(0); -ms-transform: scaleY(0); -o-transform: scaleY(0); -webkit-transform: scaleY(0); transform: scaleY(0); -moz-transform-origin: 0 0; -ms-transform-origin: 0 0; -o-transform-origin: 0 0; -webkit-transform-origin: 0 0; transform-origin: 0 0; -moz-transition: -moz-transform 0.1s linear; -ms-transition: -ms-transform 0.1s linear; -o-transition: -o-transform 0.1s linear; -webkit-transition: -webkit-transform 0.1s linear; transition: transform 0.1s linear; } #nav li { background: url('menu_line.png') no-repeat scroll right 5px transparent; float: left; position: relative; } #nav li a { color: #FFFFFF; display: block; float: left; font-weight: normal; height: 30px; padding: 23px 20px 0; position: relative; text-decoration: none; text-shadow: 1px 1px 1px #000000; } #nav li:hover > a { color: #00B4FF; } #nav li:hover, #nav a:focus, #nav a:hover, #nav a:active { background: none repeat scroll 0 0 #121212; outline: 0 none; } #nav li:hover ul.subs { left: 0; top: 53px; width: 180px; -moz-transform: scaleY(1); -ms-transform: scaleY(1); -o-transform: scaleY(1); -webkit-transform: scaleY(1); transform: scaleY(1); } #nav ul li { background: none; width: 100%; } #nav ul li a { float: none; } #nav ul li:hover > a { background-color: #121212; color: #00B4FF; } #lavalamp { background: url('lavalamp.png') no-repeat scroll 0 0 transparent; height: 16px; left: 13px; position: absolute; top: 0px; width: 64px; -moz-transition: all 300ms ease; -ms-transition: all 300ms ease; -o-transition: all 300ms ease; -webkit-transition: all 300ms ease; transition: all 300ms ease; } #lavalamp:hover { -moz-transition-duration: 3000s; -ms-transition-duration: 3000s; -o-transition-duration: 3000s; -webkit-transition-duration: 3000s; transition-duration: 3000s; } #nav li:nth-of-type(1):hover ~ #lavalamp { left: 13px; } #nav li:nth-of-type(2):hover ~ #lavalamp { left: 90px; } #nav li:nth-of-type(3):hover ~ #lavalamp { left: 170px; } #nav li:nth-of-type(4):hover ~ #lavalamp { left: 250px; } #nav li:nth-of-type(5):hover ~ #lavalamp { left: 330px; } #nav li:nth-of-type(6):hover ~ #lavalamp { left: 410px; } #nav li:nth-of-type(7):hover ~ #lavalamp { left: 490px; } #nav li:nth-of-type(8):hover ~ #lavalamp { left: 565px; }
По материалам: CSS3 vertical multicolor 3D menu и Pure CSS3 LavaLamp Menu
Перевод — Дежурка!
28 января 2013 в 15:17
Кто подскажет как убрать отступ находящийся под меню.
23 апреля 2013 в 21:47
Хоть бы написали как это подключить. !!
августа 13, 2014 at 9:30 дп
Если ты незнаеш как подключить то это не для тебя