[HTML/CSS] div "hitvlak" verkeerd in IE7

Pagina: 1
Acties:
  • 387 views sinds 30-01-2008
  • Reageer

  • Predje
  • Registratie: December 2002
  • Laatst online: 03-03 11:55
oplossing gevonden:
de tekst in de <li>`s plaatsen tussen <a> met display:block; werkt.

Hey Allemaal,

Heb een gekke fout gevonden in IE7..
Ik heb een div in een div in een div... deze div staat op hidden en wordt met mouseover op visible gezet.
Als zijnde een popmenu. Geen javascript met een teller, etc. gewoon aan/uit.
Werkt perfect in FF en IE<7.. alleen IE7 neemt niet het "hitvlak" van de div (box van height+width) maar neemt alleen de tekst in de div staat.

Deze tekst in een <p>, <span> of <div> zetten met de juiste maten vergroot het hitvlak niet.
Gekke is dat de bovenliggende divs wel het hele block neemt bij mouseover.

relevante code:
html
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
        <div id="MenuDiv">
            <div class="MenuBarOptie" onMouseOver="this.className='MenuBarOptieOn'" onMouseOut="this.className='MenuBarOptie'">Home</div>
            <div onclick="window.location.replace('index01.aspx?id=zoek')" class="MenuBarOptie" onMouseOver="this.className='MenuBarOptieOn'" onMouseOut="this.className='MenuBarOptie'">Zoeken</div>
            <div class="MenuBarOptie" onMouseOver="this.className='MenuBarOptieOn'" onMouseOut="this.className='MenuBarOptie'">A&nbsp;tot&nbsp;Z</div>
            <div class="MenuBarOptie" onMouseOver="this.className='MenuBarOptieOn'" onMouseOut="this.className='MenuBarOptie'">Onderwerpen</div>
            <div class="MenuBarOptie" onMouseOver="this.className='MenuBarOptieOn'" onMouseOut="this.className='MenuBarOptie'">Afgeprijsd</div>
            <div class="MenuBarOptie" onMouseOver="this.className='MenuBarOptieOn'" onMouseOut="this.className='MenuBarOptie'">Contact</div>
            <div class="MenuBarOptie" onMouseOver="this.className='MenuBarOptieOn'; document.getElementById('ExtraMenuDiv').style.visibility='visible'" onMouseOut="this.className='MenuBarOptie'; document.getElementById('ExtraMenuDiv').style.visibility='hidden'">Meer...
                <div id="ExtraMenuDiv">
                <div class="MenuBarExtraOptie" onMouseOver="this.className='MenuBarExtraOptieOn'" onMouseOut="this.className='MenuBarExtraOptie'">Over Ons</div>
                <div class="MenuBarExtraOptie" onMouseOver="this.className='MenuBarExtraOptieOn'" onMouseOut="this.className='MenuBarExtraOptie'">Bezoek Ons</div>
                <div class="MenuBarExtraOptie" onMouseOver="this.className='MenuBarExtraOptieOn'" onMouseOut="this.className='MenuBarExtraOptie'">Beurzen</div>
                <div class="MenuBarExtraOptie" onMouseOver="this.className='MenuBarExtraOptieOn'" onMouseOut="this.className='MenuBarExtraOptie'">Links</div>
                </div>
            </div>
        </div>


en de CSS
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
#MenuDiv
{
    background-color: #2E2E2E;
    background-image: url('grijs_vlak_verloop.gif');
    background-repeat: repeat-x;
    width: auto;
    height: 25px;
    position: relative;
    margin-left: 150px;
}

#ExtraMenuDiv
{
    z-index: 2;
    position: relative;
    top: 0px;
    left: -10px;
    width: 140px;
    height: 100px;
    visibility: hidden;
}

.MenuBarOptie
{
    height: 100%;
    width: auto;
    font-family: Verdana, Arial;
    font-size: 12px;
    color: #FFF;
    text-align: left;
    vertical-align: bottom;
    line-height: 25px;
    padding-top: 0px;
    padding-left: 10px;
    padding-right: 10px;
    padding-bottom: 0px;
    cursor: pointer;
    float: left;
}

.MenuBarOptieOn
{
    background-color: #C5231D;
    background-image: url('grijs_vlak_verloop_on.gif');
    background-repeat: repeat-x;
    height: 100%;
    width: auto;
    font-family: Verdana, Arial;
    font-size: 12px;
    color: #FFF;
    text-align: left;
    vertical-align: bottom;
    line-height: 25px;
    padding-top: 0px;
    padding-left: 10px;
    padding-right: 10px;
    padding-bottom: 0px;
    cursor: pointer;
    float: left;
} 

.MenuBarExtraOptie
{
    background-color: #2E2E2E;
    background-image: url('grijs_vlak_verloop.gif');
    background-repeat: repeat-x;
    height: 25px;
    width: 140px;
    font-family: Verdana, Arial;
    font-size: 12px;
    color: #FFF;
    text-align: left;
    vertical-align: bottom;
    line-height: 25px;
    padding-top: 0px;
    padding-left: 10px;
    padding-right: 10px;
    padding-bottom: 0px;
    cursor: pointer;
}

.MenuBarExtraOptieOn
{
    background-color: #C5231D;
    background-image: url('grijs_vlak_verloop_on.gif');
    background-repeat: repeat-x;
    height: 25px;
    width: 140px;
    font-family: Verdana, Arial;
    font-size: 12px;
    color: #FFF;
    text-align: left;
    vertical-align: bottom;
    line-height: 25px;
    padding-top: 0px;
    padding-left: 10px;
    padding-right: 10px;
    padding-bottom: 0px;
    cursor: pointer;
}


Iemand enig idee of zal ik MS maar gaan mailen? :)

  • mithras
  • Registratie: Maart 2003
  • Niet online
Kennelijk wil je daar een menu van maken, waarvoor html elementen ol, ul en li uitermate geschikt zijn. Je moet niet met div's gaan klooien als je een menu wil maken: daarvoor zijn lijsten bedoeld.

Wat jij eigenlijk wil is een zogenaamd suckerfish menu, die je uitermate goed kan stylen met css: [google=suckerfish css] en dan met name het artikel van A List Apart.

  • Predje
  • Registratie: December 2002
  • Laatst online: 03-03 11:55
mithras schreef op dinsdag 09 januari 2007 @ 15:30:
Kennelijk wil je daar een menu van maken, waarvoor html elementen ol, ul en li uitermate geschikt zijn. Je moet niet met div's gaan klooien als je een menu wil maken: daarvoor zijn lijsten bedoeld.

Wat jij eigenlijk wil is een zogenaamd suckerfish menu, die je uitermate goed kan stylen met css: [google=suckerfish css] en dan met name het artikel van A List Apart.
Mhh die van het artikel van A List Apart ziet er wel heel mooi uit, lijkt een nettere oplossing dan moet div`s. thx..
Maargoed blijft die "probleem" onopgelost..

  • Predje
  • Registratie: December 2002
  • Laatst online: 03-03 11:55
Ondanks dat het een mooiere oplossing heeft zijn er 2 dingen fout..
Allereest zijn nu alleen de links (tekst) klikbaar en nu het hele hovervlak (div onclick).
Ten tweede heeft IE7 exact dezelfde fout als beschijven in de openingspost..
Dus ik hanteer wel de suckerfish opbouw (netter in de html/css), maar de fout blijft...

help :)

  • Predje
  • Registratie: December 2002
  • Laatst online: 03-03 11:55
Mhh, de voorbeelden in het artikel werken wel in IE7..
Ga maar weer verder zoeken wat ik dan fout heb.

  • André
  • Registratie: Maart 2002
  • Laatst online: 14:48

André

Analytics dude

Predje, kun je de edit knop gebruiken als je iets nieuws te melden hebt ;)

  • gvanh
  • Registratie: April 2003
  • Laatst online: 02-12-2023

gvanh

Webdeveloper

Zelf werk ik ook altijd met DIVs om uitklapmenu's te maken ... en dat werkt voor mij altijd prima. Ik heb verschillende keren met lijsten gewerkt, maar dat is tot nog toe altijd geeindigd in frustratie ... de linker-marge van de bullets en links van de bullets werken in IE en Firefox zo essentieel anders ... dat ik steeds weer op een muur ben gelopen. Maar gut ... dat is wellicht een hiaat in kennis aan mijn kant. |:(.

De DIV menu's heb ik dan overigens gebouwd op basis van een "position:absolute" stijl, waarbij ik de menu's onder de desbetreffende bovenbalk plaats op het moment dat er een "mouseover" plaatsvindt. De gewenste positie (left, top) van het menu wordt bepaald aan de hand van de positie het DOM element dat het mouse-over event triggert.

Dan nog even een commentaar op wat jij zelf hebt gemaakt ... alhoewel ik niet verwacht dat het je probleem oplost.
HTML:
1
2
3
4
5
<div class="MenuBarExtraOptie" onMouseOver="this.className='MenuBarExtraOptieOn'" onMouseOut="this.className='MenuBarExtraOptie'">Over Ons</div>
                <div class="MenuBarExtraOptie" onMouseOver="this.className='MenuBarExtraOptieOn'" onMouseOut="this.className='MenuBarExtraOptie'">Bezoek Ons</div>
                <div class="MenuBarExtraOptie" onMouseOver="this.className='MenuBarExtraOptieOn'" onMouseOut="this.className='MenuBarExtraOptie'">Beurzen</div>
                <div class="MenuBarExtraOptie" onMouseOver="this.className='MenuBarExtraOptieOn'" onMouseOut="this.className='MenuBarExtraOptie'">Links</div>
                </div>


Als je van die div's nou 'ns <a>-tjes maakt. Je geeft dan in je stylesheet "display: block" aan bij ieder van die a's, zodat ze zich hetzelfde gedragen als de <div>s. Vervolgens kun je met pseudo-classes in je stylesheet de mouseover en mouseout handelingen stijlen ... dat scheelt een hoop javascript en code.
Je stylesheet wordt dan dus zoiets:

div.menu a {
color: blue;
}
div.menu a:hover {
color: red;
}

[ Voor 44% gewijzigd door gvanh op 09-01-2007 17:18 . Reden: Aanvulling verhaal over <div> naar <a> ]


  • Predje
  • Registratie: December 2002
  • Laatst online: 03-03 11:55
Dat is ook netter inderdaad, maar van die code ben ik nu eigelijk afgestapt.
Ik had namelijk dezelfde fout met de lijsten en die waren al javascript vrij en veel minder code.
Zoek nu dus een oplossing voor hetzelfde probleem, maar mijn opzet is nu anders geworden.
Pagina: 1