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:

menu

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 (&raquo;) 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 &raquo;</a>
            <ul>
                <li><a href="#">Pierwszy</a></li>
                <li><a href="#">Drugi</a></li>
                <li><a href="#">Trzeci &raquo;</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 &raquo;</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 &raquo;</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.