Voor een opdracht voor school moeten we een portfolio site voor ons zelf maken. Op deze site wil ik zo goed mogelijk gebruik maken van CSS, dus voor het popup menu maak ik gebruik van de Suckerfisch dropdowns 'techniek'. Ik maak echter geen gebruik een list als 'parent', maar een plaatje, gepositioneerd in een layer.
De code achter een menu item is bijvoorbeeld:
de div class popUpDiv ziet er als volgt uit:
als je met de muis over een .menuItem class gaat wordt dit geactiveerd:
die 2e class, .menuItemOver, is een hack om het menu in IE te laten werken. omdat IE de :hover pseudeclass niet ondersteunt laat ik me javascript de naam van .menuitem veranderen naar menuitemover, om het op deze manier te omzeilen (deze manier gebruiken ze ook bij suckerfish, maar ik heb hem aangepast voor mijn div gebasseerde menu).
dit is de gebruikte javascript:
op zich werkt het nu in IE, maar nu het probleem:
wanneer ik het menu in opera bekijk, dan werkt het menu perfect, en via de pure CSS kant (dus het bovenstaande javascriptje is niet nodig). wanneer ik het echter in IE bekijk openen de '.popUpdiv' layers ónder de menu items op, waardoor ik dus er niet op kan klikken. alsvolgt:
In firefox werkt het helemaal niet.
kijk hier voor de volledige site.
weet iemand waarom de popup's in IE ónder de menu items verschijnen? terwijl hun z-index goed staat? en waarom het menu helemaal niet werkt in FireFox?
De code achter een menu item is bijvoorbeeld:
HTML:
1
2
3
4
5
6
7
8
9
10
| <div class="menuItem" id="menuAfgerondeProjecten"> <a href="#">[img]"img/menu_out_projecten.gif"[/img]</a> <div class="popUpDiv"> <ul> <li><a href="">Websites</a></li> <li><a href="">Print</a></li> <li><a href="">Digitaal</a></li> </ul> </div> </div> |
de div class popUpDiv ziet er als volgt uit:
Cascading Stylesheet:
1
2
3
4
5
6
7
8
9
10
11
| .popUpDiv { display : none; position : relative; left : 90px; top : -20px; width : 100px; border : 1px solid #974300; background : #938D5C url('img/menu_popup_background.jpg') repeat-x; z-index : 3; } |
als je met de muis over een .menuItem class gaat wordt dit geactiveerd:
Cascading Stylesheet:
1
2
3
4
| .menuItem:hover .popUpDiv, .menuItemOver .popUpDiv { display : block; } |
die 2e class, .menuItemOver, is een hack om het menu in IE te laten werken. omdat IE de :hover pseudeclass niet ondersteunt laat ik me javascript de naam van .menuitem veranderen naar menuitemover, om het op deze manier te omzeilen (deze manier gebruiken ze ook bij suckerfish, maar ik heb hem aangepast voor mijn div gebasseerde menu).
dit is de gebruikte javascript:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| startList = function() { if (document.all&&document.getElementById) { navRoot = document.getElementById("menuContainer"); for (i=0; i<navRoot.childNodes.length; i++) { node = navRoot.childNodes[i]; if (node.getAttribute('className')=="menuItem") { node.onmouseover=function() { this.className ="menuItemOver"; this.getAttribute('className'); } node.onmouseout=function() { this.className="menuItem"; } } } } } window.onload=startList; |
op zich werkt het nu in IE, maar nu het probleem:
wanneer ik het menu in opera bekijk, dan werkt het menu perfect, en via de pure CSS kant (dus het bovenstaande javascriptje is niet nodig). wanneer ik het echter in IE bekijk openen de '.popUpdiv' layers ónder de menu items op, waardoor ik dus er niet op kan klikken. alsvolgt:
![]() | ![]() |
| Opera | IE |
In firefox werkt het helemaal niet.
kijk hier voor de volledige site.
weet iemand waarom de popup's in IE ónder de menu items verschijnen? terwijl hun z-index goed staat? en waarom het menu helemaal niet werkt in FireFox?

