Ik gebruik de volgende html:
Met deze CSS:
Omdat IE geen :hover ondersteund op andere elementen dan A gebruik ik een klein javascriptje om de class "sfhover" te geven aan de li-elementen die dat nodig hebben. Dat werkt an sich:
Het probleem ontstaat als ik een li-element een padding meegeef. Op het moment dat mn muis uit het eerste li gaat, klapt het subment weer in. Das niet zo handig, aangezien het wel de bedoeling is dat die li's een padding krijgen.
In CSS-ondersteunende browsers werkt 't prima, alleen voor IE moet de boel weer aangepast. Iemand een idee hoe ik dit een beetje netjes op kan lossen? Kan dit uberhaupt wel in IE, zonder een berg javascript te moeten gebruiken?
code:
1
2
3
4
5
6
7
8
9
10
11
12
| <ul id="nav">
<li><a href="#">Item</a>
<ul>
<li><a href="#">sub</a></li>
<li><a href="#">sub</a></li>
<li><a href="#">sub</a></li>
<li><a href="#">sub</a></li>
</ul>
</li>
<li><a href="#">Item</a>
<li><a href="#">Item</a></li>
</ul> |
Met deze CSS:
code:
In FF gaat het zonder problemen 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
| #nav a {
text-decoration: none;
font-size: 12px;
font-weight: bold;
color: #ffffff;
}
#nav a:hover {
text-decoration:
none; font-size: 12px;
font-weight: bold;
color: #6e6e6e;
}
#nav ul {
position: relative;
padding: 0;
margin: 0;
top: 0;
list-style: none;
}
#nav li {
float: left;
position: relative;
list-style: none;
border: 1px solid black;
}
#nav li ul {
display: none;
position: absolute;
top: 1em;
left: 0;
padding-bottom: 5px;
}
#nav li:hover ul, #nav li.sfhover ul {
display: block;
left: 0;
}
#nav li ul li {
list-style-image: url('/images/arrow.gif');
padding: 10px 25px 0px 0px;
}
#nav li ul li a {
font-weight: bold;
font-style: italic;
color: #6e6e6e;
}
#nav li ul li a:hover {
font-weight: bold;
font-style: italic;
color: black;
} |
Omdat IE geen :hover ondersteund op andere elementen dan A gebruik ik een klein javascriptje om de class "sfhover" te geven aan de li-elementen die dat nodig hebben. Dat werkt an sich:
code:
1
2
3
4
5
6
7
8
9
10
11
12
| sfHover = function() {
var sfEls = document.getElementById("nav").getElementsByTagName("LI");
for (var i=0; i<sfEls.length; i++) {
sfEls[i].onmouseover=function() {
this.className+=" sfhover";
}
sfEls[i].onmouseout=function() {
this.className=this.className.replace(new RegExp(" sfhover\\b"), "");
}
}
}
if (window.attachEvent) window.attachEvent("onload", sfHover); |
Het probleem ontstaat als ik een li-element een padding meegeef. Op het moment dat mn muis uit het eerste li gaat, klapt het subment weer in. Das niet zo handig, aangezien het wel de bedoeling is dat die li's een padding krijgen.
In CSS-ondersteunende browsers werkt 't prima, alleen voor IE moet de boel weer aangepast. Iemand een idee hoe ik dit een beetje netjes op kan lossen? Kan dit uberhaupt wel in IE, zonder een berg javascript te moeten gebruiken?