Uczestnicząc aktywnie w życiu forum dla webmasterów zauważam, że dość częstym problemem jest menu rozsuwane. Dzisiaj pokażę wam jak takowe zrobić, temat co prawda był omawiany wiele razy, jednak w większości poradników używany jest JavaScript, przez co: 1. Jest to rozwiązanie mało optymalne i toporne, 2. Po wyłączeniu JavaScriptu nasza strona jest bezużyteczna.
Zaczynamy od stworzenia szkieletu 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 27 28 29 30 31 32 33
<ul id="”menu”">
<li><a href="”#”">Strona Główna</a></li>
<li><a href="”#”">Portfolio</a>
<ul>
<li><a href="”#”">Grafika</a></li>
<li><a href="”#”">Webdesign</a></li>
</ul>
</li>
<li><a href="”#”">O mnie</a></li>
<li><a href="”#”">Oferta</a>
<ul>
<li><a href="”#”">Cennik</a></li>
<li><a href="”#”">Terminy</a></li>
</ul>
</li>
<li><a href="”#”">Kontakt</a></li>
</ul>
Bez css’a wygląda to tak:

Gdy już mamy gotowy szkielet naszego menu, zabieramy się za css. Oczywiście nic nie stoi na przeszkodzie żeby po dodaniu styli dopisać do menu jakieś opcje.
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 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105
body {
background: #606060;
font-family: Arial, verdana;
}
ul {
list-style:none; /* usuwamy wypunktowanie listy */
}
#menu {
margin: 0;
padding: 0; /* usuwamy wszelkie odstępy */
}
#menu li a {
border-left: 1px #2a2a2a solid;
border-right: 1px #585a5b solid;
border-bottom: 1px #585a5b solid;
border-top: 1px #2a2a2a solid;
color: #ffffff;
text-decoration:none;
padding:15px 15px;
background: #333333;
}
#menu li, #menu li a {
float:left;
}
#menu li {
position:relative; /* względem tego będziemy pozycjonowali podmenu */
}
#menu li a:hover {
background: #252627;
}
#menu li ul { /* tutaj odnosimy się do podmenu*/
display:none;
position:absolute;
top:100%; /* wysuwające się podmenu przesuwamy w dół o długość menu-matki */
padding:0;
margin:0; /*usuwamy wszelkie odstępy podmenu*/
}
#menu li:hover > ul { /* selektor > oznacza, że instrukcja obejmuje każdy tag
<ul> wewnątrz #menu li */
display:block;
}
#menu li ul li, #menu li ul li a {
float: none;
}
#menu li ul li a {
width: 100px; /* szerokosc wysuwajacego sie podmenu*/
display: block;
}
Po ostylowaniu jak widać wszystko działa poprawnie, a co najważniejsze – bez udziału JavaScriptu. :)

Autor: Maciej Owcarz
Źródło: dhofca.pl




Zostaw swój komentarz


4 Komentarzy
A jak z drugim poziomem menu?
A nie lepiej użyć CSS Drop-Down Menu Framework?
http://vivee.info/2008/12/24/rozwijane-menu-na-szybko/
Proste w konstrukcji, bardzo wygodne do stylowania i rozwijane w każdą możliwą stronę…
Dzięki za totorial, szukałem właśnie takiego menu
Fajnie, tylko w IE7 (nie wiem, jak w innych IE) submenu mam przesunęte o 1 pozycję w prawo czyli po najechaniu na “PORTFOLIO” submenu wyświetla mi się pod “O MNIE”.