So, ich habe die Codewurst mal viviseziert und auf das Wesentliche REDUZIERT. Folgende Fehler stelle ich fest:
- es fehlt ein Style, der den Normalzustand des Popup auf
display:nonefestlegt - IDs müssen eindeutig sein, mehrfache Verwendung von
id="submenu"ist nicht zulässig. Du kannst statt dessenclass="submenu"zuordnen und im CSS mitul.submenuansprechen - Du gibst dem
ul#submenueinposition:absolute. Das ist ok, aber benötigt eigentlich ein Elternelement mitposition:relative, das den Bezugspunkt für das absolut positionierte Element liefert. Entweder hast Du den entsprechenden Style nicht mitgeliefert, oder es funktioniert bei Dir nur deshalb, weil Du für das Menü keine top/left Angaben machst. Sobald Du es nur um ein Pixel anderswo haben willst, wird der Browser es relativ zum einzigen vorhandenenposition:relativeElement platzieren, und das ist der body. - In meiner Ansicht erscheint das Menü als Lord Vetinari Wappen, ich habe die Hintergrundfarben etwas angepasst um den Text lesen zu können. Deine Komplettseite hat vermutlich weitere styles, die die Textfarbe ändern.
- Ich bezweifle, dass das nav Element für handgestyle Popup-Menüs sinnvoll ist. Es bezeichnet eigentlich den Navigationsbereich der ganzen Seite und bringt über
role='navigation'entsprechende Aria-Informationen mit. Das wäre aber schon falsch, für Popups ist eigentlichrole='menu'richtig. Ich würde es an deiner Stelle weglassen, dem ul.submenu die menu-Rolle geben und die Popup-Steuerung komplett daran festmachen.
Der größte Honk ist dieser:
nav li:hover #submenu { display: block;}sieht aus wie der Versuch, das Submenü aufdisplay:blockzu schalten, wenn man über einem List-Item hovert. Das kann aber so nicht funktionieren, weil der Selektor "nav li:hover #submenu" ein Element mit id="submenu" trifft, das sich innerhalb eines li:hover befindet, das sich innerhalb eines nav befindet. Das HTML hat aber eine andere Hierarchie. Eine Alternative könntetd:hover ul.submenusein. Das setzt dann natürlich voraus, dassul.submenueinen Default-Style mitdisplay:nonehat.
So. Damit hast Du erstmal ein paar Hausaufgaben (und ich habe hoffentlich alle meine Tibfäler gefunden) ;-)
Rolf