jaja: Warum braucht das Menü soviele ul:hover?

Hallo allerseits!

Eine Fachfrage:

Ich versteh einfach nicht warum dieses Menü soviele dieser ul:hover braucht?

.menu :hover ul :hover ul,
.menu :hover ul :hover ul :hover ul,
.menu :hover ul :hover ul :hover ul :hover ul,
.menu :hover ul :hover ul :hover ul :hover ul :hover ul

danke für eure erklärungen!

Hier die HTML:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml2/DTD/xhtml1-strict.dtd">  
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">  
<head>  
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />  
	<title>CSS Menu Maker</title>  
    <link rel="stylesheet" href="menu_style.css" type="text/css" />  
</head>  
<body>  
  
<div>  
<ul class="menu">  
	<li class="top"><a href="#" class="top_link"><span>Sample Menu</span></a></li>  
  
	<li class="top"><a href="#" class="top_link"><span>Sample Menu This is some longer text</span></a>  
		<ul class="sub">  
			<li><a href="#">Sample Menu This is some longer text</a></li>			  
			<li><a href="#">Sample Menu</a></li>  
            <li><a href="#">Sample Menu</a></li>  
            <li><a href="#">Sample Menu</a></li>  
            <li><a href="#">Sample Menu</a></li>  
  
		</ul>  
	</li>  
	<li class="top"><a href="#" class="top_link"><span>Sample Menu</span></a>  
		<ul class="sub">  
			<li><a href="#">Sample Menu This is some longer text</a></li>			  
            <li><a href="#">Sample Menu</a></li>  
            <li><a href="#">Sample Menu</a></li>  
  
            <li><a href="#">Sample Menu</a></li>  
		</ul>  
	</li>  
	<li class="top"><a href="#" class="top_link"><span>Sample Menu</span></a></li>  
	<li class="top"><a href="#" class="top_link"><span>Sample Menu</span></a></li>  
</ul>  
</div>  
  
</body>  
  
</html>  

Hier die CSS:

.bg {background: url(images/button4.gif);}  
.menu {padding:0 0 0 32px; margin:0; list-style:none; height:40px; background:#fff url(images/button1a.gif) repeat-x; position:relative; font-family:arial, verdana, sans-serif; }  
.menu li.top {display:block; float:left; position:relative;}  
.menu li a.top_link {display:block; float:left; height:40px; line-height:33px; color:#bbb; text-decoration:none; font-size:11px; font-weight:bold; padding:0 0 0 12px; cursor:pointer;}  
.menu li a.top_link span {float:left; font-weight:bold; display:block; padding:0 24px 0 12px; height:40px;}  
.menu li a.top_link span.down {float:left; display:block; padding:0 24px 0 12px; height:40px; background:url(images/down.gif) no-repeat right top;}  
.menu li a.top_link:hover {color:#000; background: url(images/button4.gif) no-repeat;}  
.menu li a.top_link:hover span {background:url(images/button4.gif) no-repeat right top;}  
.menu li a.top_link:hover span.down {background:url(images/button4a.gif) no-repeat right top;}  
  
.menu li:hover > a.top_link {color:#000; background: url(images/button4.gif) no-repeat;}  
.menu li:hover > a.top_link span {background:url(images/button4.gif) no-repeat right top;}  
.menu li:hover > a.top_link span.down {background:url(images/button4a.gif) no-repeat right top;}  
  
.menu table {border-collapse:collapse; width:0; height:0; position:absolute; top:0; left:0;}  
  
.menu a:hover {visibility:visible;}  
.menu li:hover {position:relative; z-index:200;}  
  
.menu ul,  
.menu :hover ul ul,  
.menu :hover ul :hover ul ul,  
.menu :hover ul :hover ul :hover ul ul,  
.menu :hover ul :hover ul :hover ul :hover ul ul {position:absolute; left:-9999px; top:-9999px; width:0; height:0; margin:0; padding:0; list-style:none;}  
  
.menu :hover ul.sub {left:2px; top:40px; right:2px; background: #fff; padding:3px 0; border:1px solid #999999; white-space:nowrap; width:200px; height:auto;}  
.menu :hover ul.sub li {display:block; height:20px; position:relative; float:left; width:250px;}  
.menu :hover ul.sub li a {font-weight:normal;display:block; font-size:15px; height:20px; width:192px; line-height:20px; text-indent:5px; color:#000; text-decoration:none; border:3px solid #fff; border-width:0 0 0 3px;}  
.menu :hover ul.sub li a.fly {background:#fff url(images/arrow.gif) 80px 7px no-repeat;}  
.menu :hover ul.sub li a:hover {background:#999999; color:#fff;}  
.menu :hover ul.sub li a.fly:hover {background:#999999 url(images/arrow_over.gif) 80px 7px no-repeat; color:#fff;}  
.menu :hover ul li:hover > a.fly {background:#999999 url(images/arrow_over.gif) 80px 7px no-repeat; color:#fff;}  
  
.menu :hover ul :hover ul,  
.menu :hover ul :hover ul :hover ul,  
.menu :hover ul :hover ul :hover ul :hover ul,  
.menu :hover ul :hover ul :hover ul :hover ul :hover ul  
{left:90px; top:-4px; background: #fff; padding:3px 0; border:1px solid 999999; white-space:nowrap; width:93px; z-index:200; height:auto;}
  1. Hallo,

    sieht mir nach Blödsinn aus.

    .menu ul,  
    .menu :hover ul ul,  
    .menu :hover ul :hover ul ul,  
    .menu :hover ul :hover ul :hover ul ul,  
    .menu :hover ul :hover ul :hover ul :hover ul ul {position:absolute; left:-9999px; top:-9999px; width:0; height:0; margin:0; padding:0; list-style:none;}
    

    Die erste Zeile besagt, dass die Regeln bereits angewendet werden sollen, wenn die Seite geladen wird. Die anderen sorgen dafür, dass diese Darstellung auch bei mouseover beibehalten wird.

    Da ul aber aus dem Viewport hinausgeschoben wird (um 9999px nach links und oben), kann die ul nicht mit der Maus überfharen werden.

    Von daher macht alles nach der ersten Zeile für mich keinen Sinn.

    Da sich Links innerhalb des Menüs aber nach wie vor antabben lassen (von Tastaturnutzern), sollten fokussierte Links irgendwie dargestellt werden.

    Aber das geht mit :focus und nicht mit :hover...

    Viele Grüße,
    Marc.

    --
    Und immer schön
    validieren (http://validator.w3.org/)
    1. Von daher macht alles nach der ersten Zeile für mich keinen Sinn.

      Sehe ich auch so.

      Grob gesagt: es hat sich vermutlich jemand nicht mit den http://de.selfhtml.org/css/formate/kaskade.htm@title=Grundlagen auseinandergesetzt.

      Das kann man wesentlich einfacher schreiben.

    2. Ich hab´s von einem css menu generator ... von dem lass ich jetzt lieber die finger!