Ik heb een simpel concept voor een verticaal uitklapmenu.
Het is gewoon een unordered list CSS:hover menu, zoals dat op vele sites te vinden is, maar dan met javascript om een variabele breedte en een delay toe te kunnen voegen.
Nu is mijn probleem dat de menuitems uit een database komen en dus de breedte van het menuitem niet vantevoren bekend is.
Ik heb vanalles al geprobeerd :
- absoluut gepositioneerd met javascript die de offsetWidth gebruikt
- relatief of float werkt in dit geval niet (omdat het allemaal "in" elkaar zit, dus <ul> binnen een <li>)
Nog even de code die ik gebruik :
Het is gewoon een unordered list CSS:hover menu, zoals dat op vele sites te vinden is, maar dan met javascript om een variabele breedte en een delay toe te kunnen voegen.
Nu is mijn probleem dat de menuitems uit een database komen en dus de breedte van het menuitem niet vantevoren bekend is.
Ik heb vanalles al geprobeerd :
- absoluut gepositioneerd met javascript die de offsetWidth gebruikt
- relatief of float werkt in dit geval niet (omdat het allemaal "in" elkaar zit, dus <ul> binnen een <li>)
Nog even de code die ik gebruik :
Cascading Stylesheet:
1
2
3
4
5
6
7
8
9
10
| html * { -moz-box-sizing: border-box; } #navL { position: absolute; top: 0; left: 0; /*width: 120px;*/ height: 100%; padding-top: 100px; border: 1px solid red; } #navL li { width: 110px; } #navL ul { list-style: none; margin:0; padding:0; background: #AAA; } #navL li { list-style: none; margin:0; padding:0; } #navL li a { width: 100%; height: 100%; text-decoration: none; font: bold 12px verdana; color: #FFF; } |
HTML:
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
| <html> <head> <script type="text/javascript"> function test(el) { var sub = el.childNodes[1]; sub.style.position = 'absolute'; sub.style.display = 'block'; sub.style.top = el.offsetTop; sub.style.left = el.offsetWidth; //120; } function hideMenu(el) { var sub = el.childNodes[1]; sub.style.display = 'none'; } </script> </head> <body> <ul id="navL"> <li onmouseover="test(this)">Menu 1 <ul style="display:none"> <li onmouseover="test(this)" onmouseout="hideMenu(this)">Submenu 1 <ul style="display:none"> <li><a href="#">Link 1</a></li> <li><a href="#">Link 2</a></li> <li><a href="#">Link 3</a></li> <li><a href="#">Link 4</a></li> <li onmouseover="test(this)">Submenu 1 <ul style="display:none"> <li><a href="#">Link 1</a></li> <li><a href="#">Link 2</a></li> <li><a href="#">Link 3</a></li> <li><a href="#">Link 4</a></li> </ul></li> </ul></li> <li><a href="#">Link 2</a></li> <li><a href="#">Link 3</a></li> <li><a href="#">Link 4</a></li> </ul></li> <li onmouseover="test(this)" onmouseout="hideMenu(this)">Menu 2 <ul style="display:none"> <li><a href="#">Link 1</a></li> <li><a href="#">Link 2</a></li> <li><a href="#">Link 3</a></li> <li><a href="#">Link 4</a></li> </ul></li> <li onmouseover="test(this)" onmouseout="hideMenu(this)">Menu 3 <ul style="display:none"> <li><a href="#">Link 1</a></li> <li><a href="#">Link 2</a></li> <li><a href="#">Link 3</a></li> <li><a href="#">Link 4</a></li> </ul></li> </ul> </body> </html> |
Iedereen wil terug naar de natuur, maar niemand wil lopend...