Dzisiaj zajmiemy się tworzeniem rozwijanego menu za pomocą HTML5 i CSS3.
Istnieje wiele sposobów na stworzenie rozwijanego menu, na przykład używając jQuery. Zaraz pokażę wam jak nie używając żadnych plików, stworzymy proste a zarazem ładne, rozwijane menu za pomocą HTML5 i CSS3.
Użyjemy przejść CSS3 aby nasz hover oraz wysuwane menu było animowane. Dokładnie taki efekt można było uzyskać za pomocą javascript, aktualnie jest to możliwe używając samego kodu.
Potrzebujemy dwóch plików:
- index.html lub index.htm (zależy od typu serwera),
- style.css
Gotowiec: POBIERZ
Demo: KLIKNIJ ABY ZOBACZYĆ
Menu, które stworzymy:
Zacznijmy od struktury HTML (index.html lub index.htm).
To jest część head:
<!doctype html> <html lang="pl"> <head> <meta charset="UTF-8"> <title>HTML5 / CSS3 Drop-Down Navigation Menu</title> <meta name="description" content=""> <link rel="stylesheet" href="style.css"> <!-- IE6-8 support of HTML5 elements --> <!--[if lt IE 9]> <script src="//html5shim.googlecode.com/svn/trunk/html5.js"></script> <![endif]--> </head>
W części body dodajemy kod naszego menu. Każdy atrybut ul wewnątrz li to rozwijane menu.
Dodatkowo dodaliśmy strzałki (»
) aby wyróżnić rozwijaną nawigację.
Menu rozwija się w dół. Jeżeli znajdzie się kolejny element do rozwinięcia to rozwinie się on w prawą stronę.
Część body:
<body> <nav id="nav"> <ul id="navigation"> <li><a href="#" class="first">Strona główna</a></li> <li><a href="#">Wysuwany #1 »</a> <ul> <li><a href="#">Pierwszy</a></li> <li><a href="#">Drugi</a></li> <li><a href="#">Trzeci »</a> <ul> <li><a href="#">Pierwszy</a></li> <li><a href="#">Drugi</a></li> <li><a href="#">Trzeci</a></li> <li><a href="#">Czwarty</a></li> </ul> </li> <li><a href="#">Czwarty</a></li> </ul> </li> <li><a href="#">Wysuwany #2 »</a> <ul> <li><a href="#">Pierwszy</a></li> <li><a href="#">Drugi</a></li> <li><a href="#">Trzeci</a></li> <li><a href="#">Czwarty</a></li> <li><a href="#">Piąty »</a> <ul> <li><a href="#">Pierwszy</a></li> <li><a href="#">Drugi</a></li> <li><a href="#">Trzeci</a></li> <li><a href="#">Czwarty</a></li> </ul> </li> <li><a href="#">Szósty</a></li> </ul> </li> <li><a href="#">Kody</a></li> <li><a href="#" class="last">Kontakt</a></li> </ul> </nav> </body> </html>
Teraz nadszedł czas ostylizować naszą nawigację.
Zaczniemy od stylu dla głównej nawigacji.
Jeśli chcesz możesz usunąć lub edytować style dla #nav posłużyły nam one tylko do wyśrodkowania naszego menu.
#nav { position:relative; width:620px; margin:0 auto; } ul#navigation { margin:0px auto; position:relative; float:left; border-left:1px solid #CC424F; border-right:1px solid #CC424F; } ul#navigation li { display:inline; font-size:12px; font-weight:bold; margin:0; padding:0; float:left; position:relative; border-top:1px solid #CC424F; border-bottom:2px solid #CC424F; } ul#navigation li a { padding:10px 25px; color:#831E24; text-shadow:1px 1px 0px #EA6D7D; text-decoration:none; display:inline-block; border-right:1px solid #EA6D7D; border-left:1px solid #831E24; border-top:1px solid #EA6D7D; background: #D75561; -webkit-transition:color 0.2s linear, background 0.2s linear; -moz-transition:color 0.2s linear, background 0.2s linear; -o-transition:color 0.2s linear, background 0.2s linear; transition:color 0.2s linear, background 0.2s linear; } ul#navigation li a:hover { background:#f8f8f8; color:#282828; } ul#navigation li:hover > a { background:#EA6D7D; }
Nadszedł czas zająć się ostylizowaniem rozwijanej części naszego menu.
ul#navigation li:hover > ul { visibility:visible; opacity:1; } ul#navigation ul, ul#navigation ul li ul { list-style: none; margin: 0; padding: 0; visibility:hidden; position: absolute; z-index: 99999; width:180px; background:#D75561; box-shadow:1px 1px 3px #D75561; opacity:0; -webkit-transition:opacity 0.2s linear, visibility 0.2s linear; -moz-transition:opacity 0.2s linear, visibility 0.2s linear; -o-transition:opacity 0.2s linear, visibility 0.2s linear; transition:opacity 0.2s linear, visibility 0.2s linear; } ul#navigation ul { top: 43px; left: 1px; } ul#navigation ul li ul { top: 0; left: 181px; } ul#navigation ul li { clear:both; width:100%; border:0 none; border-bottom:1px solid #831E24; } ul#navigation ul li a { background:none; padding:7px 15px; color:#831E24; text-shadow:1px 1px 0px #EA6D7D; text-decoration:none; display:inline-block; border:0 none; float:left; clear:both; width:150px; } ul#navigation li a.first { border-left: 0 none; } ul#navigation li a.last { border-right: 0 none; }
Koniec, udało nam się stworzyć menu.
Teraz możemy użyć naszej nawigacji w jakimś projekcie.
Mała uwaga:
Korzystając z CSS3, mogą występować problemy z kompatybilnością w starszych wersjach przeglądarki Internet Explorer.
Efekty z przejściami CSS3 nie są obsługiwane przez wcześniejsze wersje IE, ale nawigacja jest nadal funkcjonalna i może być alternatywą dla menu JavaScript.