[CSS]Suckerfish-menu gaat scheef in IE

Pagina: 1
Acties:

  • KappuhH
  • Registratie: Augustus 2004
  • Niet online
Naar aanleiding van dit artikel heb ik een Suckerfish menu gemaakt. In Firefox werkt het (tot nog toe) goed, maar in IE klapt het menu niet goed uit. De voorkant van het uit te klappen menu begint halverwege het blokje ipv het aan de rechterkant.

Nu stond er in dat artikel ook een link naar een beter opgemaakt menu, namelijk deze. Die doet het in IE wel goed, als ik nu echter de letterlijke CSS code dat die pagina in mijn CSS code plak treedt hetzelfde probleem op.

De relevante CSS code:

code:
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
div#menu {
padding: 3px 0px 0px 0px;
background-color: #516392;
border-top: 1px solid #516392;
border-right: 1px solid #516392;
border-left: 1px solid #516392;
border-bottom: 1px solid #516392;
width: 750px;
height: 22px;
}

#nav, #nav ul { 
    padding: 0;
    margin: 0;
    list-style: none;
    text-align: center;
    line-height: 20px;  
}

#nav a {
    display: block;
    width: 10em;
}

#nav li { 
    float: left;
    display: inline;
    height: 22px;
    width: 10em; 
    }
    
#nav li a {
    text-decoration: none;
    height: 22px;
    color: #ffffff;
    background-color: #626262;
}

#nav li a:hover {
    background-color: #FFFFFF;
    color: #000000;
    }   

#nav li ul { 
    position: absolute;
    width: 10em;
    left: -999em; 
    z-index: 10;
}

#nav li:hover ul, #nav li.sfhover ul { 
    left: auto;
    color: #000000;
    border-bottom: 2px solid #123456;
}


De relevante HTML code:

code:
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
<div ID="menu">
<ul ID="nav">
    <li><a href="?p=1">Home</a>
        <ul>
            <li><a href="#">Optie</a></li>
            <li><a href="#">Optie</a></li>
            <li><a href="#">Optie</a></li>
            <li><a href="#">Optie</a></li>
        </ul>
    </li>
    <li><a href="?p=2">Optie1</a>

        <ul>
            <li><a href="#">Optie</a></li>
            <li><a href="#">Optie</a></li>
            <li><a href="#">Optie</a></li>
            <li><a href="#">Optie</a></li>
            <li><a href="#">Optie</a></li>
        </ul>
    </li>
    <li><a href="?p=4">Foto's</a>

        <ul>
            <li><a href="#">Optie</a></li>
            <li><a href="#">Optie</a></li>
            <li><a href="#">Optie</a></li>
            <li><a href="#">Optie</a></li>
            <li><a href="#">Optie</a></li>
        </ul>
    </li>
    <li><a href="?p=5">Contact</a>
        <ul>
            <li><a href="#">Optie</a></li>
            <li><a href="#">Optie</a></li>
            <li><a href="#">Optie</a></li>
            <li><a href="#">Optie</a></li>
            <li><a href="#">Optie</a></li>          
        </ul>
    </li>
</ul>
</div>


En de pagina waar het om gaat: Klik

  • XWB
  • Registratie: Januari 2002
  • Niet online

XWB

Devver
Woei, ik lijk wel een helpdesk vandaag :p

Maak van

HTML:
1
2
3
4
5
6
#nav li { 
    float: left;
    display: inline;
    height: 22px;
    width: 10em; 
    }


even:

HTML:
1
2
3
4
5
#nav li {
    list-style: none;
    float: left;
    position: relative;
    }


Voor IE:

HTML:
1
2
3
4
5
#nav li:hover ul, #nav li.over ul { 
    left: auto;
    color: #000000;
    border-bottom: 2px solid #123456;
}


En dan even dit JS'je:

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
over = function() 
{
    var sfEls = document.getElementById("nav").getElementsByTagName("LI");
    for (var i=0; i<sfEls.length; i++) 
    {
        sfEls[i].onmouseover=function() {
            this.className+=" over";
        }
        sfEls[i].onmouseout=function() {
            this.className=this.className.replace(new RegExp(" over\\b"), "");
        }
    }
}

if (window.attachEvent) window.attachEvent("onload", over);

[ Voor 12% gewijzigd door XWB op 29-03-2006 14:24 ]

March of the Eagles


  • KappuhH
  • Registratie: Augustus 2004
  • Niet online
Als ik die dingen toepas dan is mn hele design weg in Firefox en klapt het menu niet uit in IE. Waarom zou ik mn javascript moeten vervangen? Het enige wat ie doet is dat ie dan in het Nederlands is zegmaar. En waarom

HTML:
1
2
3
4
5
6
#nav li { 
    float: left;
    display: inline;
    height: 22px;
    width: 10em; 
    }

vervangen door
HTML:
1
2
3
4
5
#nav li {
    list-style: none;
    float: left;
    position: relative;
    }


Als ik alleen dat bovenste stukje CSS verander dan istie in Firefox wel goed, maar in IE klapt hij niet uit...

  • XWB
  • Registratie: Januari 2002
  • Niet online

XWB

Devver
Als ik jouw code copy/paste, ziet het er in FF goed uit, maar in IE werkt het totaal niet.
Zie http://users.telenet.be/betapics/menu1.html

Voor IE voeg ik dan een stukje JS toe, want IE kent geen hover, dus zonder een JS trucje kan het nooit werken. Hiermee werkt het in FF en IE.
Zie http://users.telenet.be/betapics/menu2.html

Echter, in IE staan de uitgeklapte menu's niet goed. Daarom verander ik

HTML:
1
2
3
4
5
6
#nav li { 
    float: left;
    display: inline;
    height: 22px;
    width: 10em; 
    }


even naar

HTML:
1
2
3
4
5
#nav li {
    float: left;
    list-style: none;
    position: relative;
    }


Zie http://users.telenet.be/betapics/menu3.html

En dat werkt hier goed in FF1.5 en IE6.

[ Voor 5% gewijzigd door XWB op 29-03-2006 16:00 ]

March of the Eagles


  • KappuhH
  • Registratie: Augustus 2004
  • Niet online
Het werkt, ik moest nog even een z-index toevoegen omdattie anders niet over de onderstaande div heen klapte. Iig hartelijk bedankt, mag op slot...