CSS menu wilt niet uitklappen in IE

Pagina: 1
Acties:

  • T i M
  • Registratie: April 2004
  • Laatst online: 14:25
Ik heb een menu gemaakt in CSS, het probleem is dat het niet wilt uitklappen als ik hem bekijk met IE. Ik heb op internet gezocht naar menu's die andere mensen hebben gemaakt, maar na veel prutsen en code van andere mensen overnemen wil het me niet lukken om het werkend te krijgen. Waarschijnlijk zit er ergens een klein foutje waar ik steeds overheen kijk.

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
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
<style type='text/css'>
#menu {
    background-color: red; 
    width: 178px; 
    font-size: 0.75em; 
    text-align: center;
    padding: 0px 0px 5px 0px; 
    margin: 0px 0px 15px 6px; 
    text-align: left; 
    padding: 0px;   
}

ul.nav {margin: 0; padding: 0; list-style: none; width: 100%;}
ul.nav li {position: relative;}
ul.nav li {height: 25px; vertical-align: bottom;}
ul.nav li ul {position: absolute; left: 180px; top: 0; display: none; width: 230px; margin-left: -2px; padding: 0; }
ul.nav li a {display: block; text-decoration: none; color: black; background-color: transparent; padding: 5px; border-top: 1px solid #000000;}
ul.nav li a:hover { color: black; background: green; }
li ul.nav li a { background-color: yellow; color: black; padding: 5px;}
li:hover ul.nav, ul.nav { display: block; }
</style>
</head>

<body>

<div id="menu">
    <ul class="nav" > 
        <li class="nav"><a href="#">Bladiebla</span></a>
    
    <ul class="nav"> 
        <li><a href="#">link1?</a></li> 
        <li><a href="#">link2!</a></li> 
        <li><a href="#">Link3$</a></li>
    </ul>
    </li> 
</div>
</body>
</html>

  • MrVulcan
  • Registratie: Mei 2005
  • Laatst online: 22-09-2025
Op het eerste gezicht mis je nog een sluitende ul-tag van je eerste nav-class.

  • Alex)
  • Registratie: Juni 2003
  • Laatst online: 12-12-2025
En IE < 7 ondersteunt standaard alleen maar a:hover, daarvoor heb je een aparte htc nodig. Zoek maar eens naar 'suckerfish dropdown'

We are shaping the future


  • Borizz
  • Registratie: Maart 2005
  • Laatst online: 02-01 15:55
Okeanos schreef op donderdag 12 oktober 2006 @ 19:38:
Op het eerste gezicht mis je nog een sluitende ul-tag van je eerste nav-class.
Dit en er je hebt ook nog een span tag in je eerste menu (a) element staan die er niet thuis hoort.

Daar komt nog bij dat de :hover selector in IE(voor versie 7) alleen op A elementen werkt. Dus vandaar dat hij niet uit zal klappen. Je kan dit met javascript oplossen. Of je kan het Whatever:hover script gebruiken van Peter Nederlof.

If I can't fix it, it ain't broken.


  • XWB
  • Registratie: Januari 2002
  • Niet online

XWB

Devver
li:hover ul.nav, ul.nav { display: block; }
Dat kent IE niet, je hebt javascript nodig om dit werkend te krijgen.

/edit
spuit 2^31

/edit 2

Mogelijke oplossing:

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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
<style type='text/css'>
#menu {
    background-color: red; 
    width: 178px; 
    font-size: 0.75em; 
    text-align: center;
    padding: 0px 0px 5px 0px; 
    margin: 0px 0px 15px 6px; 
    text-align: left; 
    padding: 0px;    
}

ul.nav {margin: 0; padding: 0; list-style: none; width: 100%;}
ul.nav li {position: relative;}
ul.nav li {height: 25px; vertical-align: bottom;}
ul.nav li ul {position: absolute; left: 180px; top: 0; display: none; width: 230px; margin-left: -2px; padding: 0; }
ul.nav li a {display: block; text-decoration: none; color: black; background-color: transparent; padding: 5px; border-top: 1px solid #000000;}
ul.nav li a:hover { color: black; background: green; }
li ul.nav li a { background-color: yellow; color: black; padding: 5px;}
li:hover ul.nav, ul.nav { display: block; }
</style>
<!--[if IE 6]>
<style type="text/css">
#menu li.over ul
{
    display: block;
}       
</style>
    
<script type="text/javascript">
over = function() 
{
    var liElements = document.getElementById('menu').getElementsByTagName('li');
    for (var i = 0; i < liElements.length; i++) 
    {
        liElements[i].onmouseover = function() 
        {
            this.className += ' over';
        }
        liElements[i].onmouseout = function() 
        {
            this.className = this.className.replace(new RegExp(' over\\b'), '');
        }
    }
}

window.attachEvent('onload', over); 
</script>
<![endif]-->
</head>

<body>

<ul class="nav" id="menu"> 
    <li class="nav"><a href="#">Bladiebla</a>
        <ul class="nav"> 
            <li><a href="#">link1?</a></li> 
            <li><a href="#">link2!</a></li> 
            <li><a href="#">Link3$</a></li>
        </ul>
    </li> 
</ul>

</body>
</html>

[ Voor 94% gewijzigd door XWB op 12-10-2006 19:54 ]

March of the Eagles


  • Rowanov
  • Registratie: Februari 2004
  • Niet online

Rowanov

Kop eens wat anders...

Dan is de whatever:hover oplossing toch een stuk eleganter, aangezien het geen extra vervuiling van je code oplevert om hem in dat stuk schoot van een IE6 ook werkend te krijgen :)

  • Mercarra
  • Registratie: Juni 2001
  • Laatst online: 10:35
Misschien dat het allemaal wel gaat werken, maar ik quote Crisp nog even van vorige week:
crisp in "[JS / CSS] Content laten veranderen op t..."
crisp schreef op woensdag 04 oktober 2006 @ 21:50:
[...]

CSS gebruiken voor behavior (zoals bijvoorbeeld de suckerfish dropdowns) is gewoon fout. [...]
Ik heb ook een suckerfish menu ooit gebruikt, en het is gewoon een enorme berg css voor iets heel simpels. Javascript werkt veel eenvoudiger en je kan bijvoorbeeld delays toevoegen.

[ Voor 19% gewijzigd door Mercarra op 12-10-2006 20:51 ]

Canon EOS 6D / Samyang 14mm f/2.8 / 17-40mm f/4.0 / 35mm f/1.4 / 50mm f/1.4 / 85mm f/1.8 / 70-200mm f/4 IS mercarra.nl


  • Blaise
  • Registratie: Juni 2001
  • Niet online
Ik denk dat het belangrijker is dat het goed werkt dan dat het semantisch niet geheel klopt, zeker omdat de alternatieven je code vervuilen en lastiger te implementeren zijn.

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Blaise schreef op donderdag 12 oktober 2006 @ 20:55:
Ik denk dat het belangrijker is dat het goed werkt dan dat het semantisch niet geheel klopt, zeker omdat de alternatieven je code vervuilen en lastiger te implementeren zijn.
abstracties zijn altijd mogelijke pitfalls. Ik denk dat het belangrijker is dat je de techniek begrijpt dan dat je je laat beperken door abstracties ook al laten zich die misschien makkelijker implementeren ;)

Intentionally left blank

Pagina: 1