chevron-left chevron-right

[CSS]Menu rozwijane – poziome

Dzisiaj zaprezentuję Wam jak zrobić menu poziome rozwijane. Zbudowane tylko i wyłącznie za pomocą kodu CSS.

<div id="menu_zawartosc">
<ul id="menu">
<li><a href="#">1</a></li>
<li><a href="#">2</a></li>
<li class="link_strzalka_dol"><a href="#">3<!--[if IE 7]><!--></a><!--<![endif]-->
	<!--[if lte IE 6]>
<table>
<tr>
<td>< ![endif]-->
<ul>
<li><a href="#" class="link">31</a></li>
<li><a href="#">32</a></li>
<li class="link_strzalka_bok"><a href="#">33<!--[if IE 7]><!--></a><!--<![endif]-->
			<!--[if lte IE 6]>
<table>
<tr>
<td>< ![endif]-->
<ul>
<li><a href="#" class="link">34</a></li>
<li class="link_strzalka_bok"><a href="#">35<!--[if IE 7]><!--></a><!--<![endif]-->
 
					<!--[if lte IE 6]>
<table>
<tr>
<td>< ![endif]-->
<ul>
<li><a href="#" class="link">45</a></li>
<li class="link_strzalka_bok"><a href="#">46<!--[if IE 7]><!--></a><!--<![endif]-->
							<!--[if lte IE 6]>
<table>
<tr>
<td>< ![endif]-->
<ul>
<li><a href="#" class="link">74</a></li>
<li><a href="#">747</a></li>
<li class="link_strzalka_bok"><a href="#">78<!--[if IE 7]><!--></a><!--<![endif]-->
									<!--[if lte IE 6]>
<table>
<tr>
<td>< ![endif]-->
<ul>
<li><a href="#" class="link">250</a></li>
<li><a href="#">87</a></li>
<li><a href="#">76</a></li>
<li><a href="#">52</a></li>
<li><a href="#">13</a></li>
<li><a href="#">68</a></li>
</ul>
 
									<!--[if lte IE 6]></td>
</tr>
</table>
 
< ![endif]-->
							</li>
<li><a href="#">768</a></li>
<li><a href="#">867</a></li>
</ul>
 
							<!--[if lte IE 6]></td>
</tr>
</table>
 
< ![endif]-->
					</li>
<li><a href="#">97</a></li>
<li><a href="#">744444446</a></li>
</ul>
 
					<!--[if lte IE 6]></td>
</tr>
</table>
 
< ![endif]-->
			</li>
<li><a href="#">255</a></li>
</ul>
 
			<!--[if lte IE 6]></td>
</tr>
</table>
 
< ![endif]-->
		</li>
<li><a href="#">36</a></li>
<li><a href="#">37</a></li>
</ul>
 
	<!--[if lte IE 6]></td>
</tr>
</table>
 
< ![endif]-->
	</li>
<li><a href="#">4</a></li>
<li><a href="#">5</a></li>
<li><a href="#" class="link">6</a></li>
</ul>
</div>

Jak widać zastosowałem tutaj prostą budowę menu wraz z hackami pod Internet Explorera, które zapewnią poprawne wyświetlanie menu w tych przeglądarkach.

Kod CSS wygląda następująco dla tego zestawu:

#menu_zawartosc {margin:25px 0 100px 15px; position:relative; width:735px; height:25px; z-index:100;}
#menu, #menu ul {padding:0; margin:0; list-style-type: none;}
#menu a, #menu a:visited {display:block;width:120px; font-size:11px; color:#fff; height:25px; line-height:24px; text-decoration:none; text-indent:5px; border:1px solid #000; border-width:1px 0 1px 1px;}
#menu li ul li a, #menu li ul li a:visited {border-width:0 1px 1px 1px;}
#menu li a.link, #menu li a.link:visited {border-width:1px;}
#menu li {float:left; background:#b30000;}
#menu li:hover {position:relative;}
#menu li:hover > a {background:#dfd7ca; color:#c00;}
#menu li ul {display:none;}
#menu li:hover > ul {display:block; position:absolute; top:-11px; left:80px; padding:10px 30px 30px 30px; background:transparent; width:120px;}
#menu > li:hover > ul {left:-30px; top:16px;}
#menu table {position:absolute; border-collapse:collapse; top:0; left:0; z-index:100; font-size:1em;}
* html #menu li a:hover {position:relative; background:#dfd7ca; color:#c00;}
#menu li a:active, #menu li a:focus {background:#dfd7ca; color:#c00;}
#menu li.link_strzalka_bok {background:#7484ad url(https://blog.piotrnalepa.pl/demo/menu/strzalka_bok.gif) no-repeat right center;}
#menu li.link_strzalka_dol {background:#7484ad url(https://blog.piotrnalepa.pl/demo/menu/strzalka_dol.gif) no-repeat right center;}
* html #menu li ul {visibility:hidden; display:block; position:absolute; top:-11px; left:80px; padding:10px 30px 30px 30px; background:transparent;}
#menu li a:hover ul ul{visibility:hidden;}
#menu li a:hover ul a:hover ul ul{visibility:hidden;}
#menu li a:hover ul a:hover ul a:hover ul ul{visibility:hidden;}
#menu li a:hover ul a:hover ul a:hover ul a:hover ul ul {visibility:hidden;}
#menu li a:hover ul {visibility:visible; left:-30px; top:14px;}
#menu li a:hover ul a:hover ul{visibility:visible; top:-11px; left:80px;}
#menu li a:hover ul a:hover ul a:hover ul {visibility:visible;}
#menu li a:hover ul a:hover ul a:hover ul a:hover ul {visibility:visible;}
#menu li a:hover ul a:hover ul a:hover ul a:hover ul a:hover ul {visibility:visible;}

W samym kodzie CSS zastosowałem kilka hacków pod IE, aby zachować poprawność wyświetlania menu.

Demo z tego artykułu można zobaczyć tutaj: MENU ROZWIJANE - CSS.