[DHTML] drop down menu pos. verschilt in browsers

Pagina: 1
Acties:

  • Excrusiator
  • Registratie: Juli 2000
  • Laatst online: 18-02 20:19
Ik heb met behulp van de code die in het volgende topic staat mijn eigen dhtml menu gemaakt: [topic=430979/1/25]

Ik heb hem ook werkend gekregen en op verschillende punten aangepast zodat er nu ook een mooie layout bij zat. Omdat Opera bij mij meestal 'problemen' geeft bij het maken van pagina's (hij is iets kieskeuriger dus ik merk het gelijk als ik ergens een foutje maak ;) ). Daarom heb ik hem ook het eerst werkend gekregen in Opera:

Afbeeldingslocatie: http://www.x-pc.info/got/dhtmlmenu-opera.gif

Maar toen ik mijn mijn website bekeek in ie5.5 kreeg ik het volgende te zien:

Afbeeldingslocatie: http://www.x-pc.info/got/dhtmlmenu-ie.gif

Ik gebruik de volgende java code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
hideTimer=setTimeout('',0);
activeMenu=null;

function openMenu(menu){
    clearTimeout(hideTimer);
    closeMenu();
      document.getElementById(menu).style.visibility="visible";
      activeMenu=menu;
}

function closeMenu(){
    if(activeMenu!=null){
        document.getElementById(activeMenu).style.visibility="hidden";
        activeMenu=null;
    }
}

De volgende code gebruik ik voor mijn menu:
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
<table class="border" border="0" align="center">
<tr>
<td colspan="2">

<table class="topmenu" border="0" cellpadding="0" width="100%">
<tr>
    <td style="width:90">
        <a class="topmenu" href="/index.php">Ex's PC</a>
    </td>
    <td style="width:5">
    </td>
    <td style="width:90">
        <a class="topmenu" href="javascript://" onmouseover="openMenu('menuDiv1')" onmouseout="hideTimer=setTimeout('closeMenu()',500)">Menu1</a>

            <div id="menuDiv1" style="position:absolute;top:32;width:90px;background-color:#d0d0d0;visibility:hidden"
            onmouseover="clearTimeout(hideTimer)"
            onmouseout="hideTimer=setTimeout('closeMenu()',500)">
                <table style="background-color:#000000" width="100%">
                    <tr>
                        <td style="background-color:#f6f6f5;padding:2px;">
                            <p>
                            Option 1
                            </p>
                        </td>
                    </tr>
                    <tr>
                        <td style="background-color:#f6f6f5;padding:2px;">
                            <p>
                            Option 2
                            </p>
                        </td>
                    </tr>
                    <tr>
                        <td style="background-color:#f6f6f5;padding:2px;">
                            <p>
                            Option 3
                            </p>
                        </td>
                    </tr>
                    <tr>
                        <td style="background-color:#f6f6f5;padding:2px;">
                            <p>
                            FAQ
                            </p>
                        </td>
                    </tr>
                    <tr>
                        <td style="background-color:#f6f6f5;padding:2px;">
                            <p>
                            Legal
                            </p>
                        </td>
                    </tr>
                    <tr>
                        <td style="background-color:#f6f6f5;padding:2px;">
                            <p>
                            <a href="/index.php?func=stats">Statistics</a>
                            </p>
                        </td>
                    </tr>
                </table>
            </div>
    </td>
    <td style="width:90">
        <a class="topmenu" href="javascript://" onmouseover="openMenu('menuDiv2')" onmouseout="hideTimer=setTimeout('closeMenu()',500)">menu2</a>

            <div id="menuDiv2" style="position:absolute;parent:68px;top:35px;width:90px;background-color:#000000;visibility:hidden"
            onmouseover="clearTimeout(hideTimer)" 
            onmouseout="hideTimer=setTimeout('closeMenu()',500)">
                optie 1<br>
                optie 2<br>
                optie 3<br>
                optie 4<br>
                optie 5<br>
                optie 6
            </div>
    </td>
    <td style="width:450">
    </td>
</tr>
</table>

</td>
</tr>
<tr>
<td valign="top" width="90">
<!-- en dan de rest van mijn website -->

(let aub maar niet op het 2de menu'tje, die moet ik nog aanpassen ;) )

Wat ik mij dus afvraag is wat ik precies moet doen of welke commando's ik moet gebruiken om ervoor te zorgen dat het menu hetzelfde reageert in IE5.5 als in Opera 6.0.
Een vriendelijk hint naar waar ik het moet zoeken met een commado'tje wat de oplossing kan zijn vindt ik al voldoende. Meestal is het mij even op de goede weg helpen en dan lukt het wel. ;)

<HunterPro> HAL: is Excru intelligent?
<HAL> HunterPro: Hijs weer lekker intelligent.
* Excru aait HAL


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 23:34

crisp

Devver

Pixelated

De <div> van je menu heeft een absolute positie. Dat wil zeggen een positie ten opzichte van de body mits aangegeven.
Voor de top heb je hem inderdaad een positie van 32 pixels meegegeven.
Hier komt probleem 1 om de hoek: opera en IE gebruiken andere margins voor de pagina, dus komt hij in opera wel netjes onder het menu-item te staan, en overlapt hij in IE enigszins.
Voor left is geen positie opgegeven, dus moet de browser een aanname maken. IE plaatst hem vervolgens vlak na de <a href> wat logisch is omdat dat in de flow ligt, terwijl opera hem uitlijnt met de <td> wat ook logisch is omdat dat een omvattend block element is.
Als je de div plaatst voor de <a> heb je probleem 2 al opgelost. Als je nu ook precies de margins van je pagina opgeeft probleem 1 ook.
Ik zou hem trouwens eerst mozilla/NS compliant maken, en dan pas in opera gaan kijken.

Intentionally left blank


  • akakiwi
  • Registratie: September 2000
  • Laatst online: 20-03 11:13

akakiwi

I believe in the ruling class.

Niet lullig bedoeld, maar, wat is de toegevoegde waarde van het aanpassen van een site voor andere browsers dan IE???
[no flame intended]

90%!! :'( van de webgebruikers gebruikt namelijk IE, ipv Netscape, Opera.... etc. etc.
Ikzelf optimaliseer geen sites meer voor andere browsers, omdat het simpelweg te veel moeite is, en te weinig toegevoegde waarde heeft. >:)

| Life is a game (and games are fun) | homepage |


  • Excrusiator
  • Registratie: Juli 2000
  • Laatst online: 18-02 20:19
Thanks! Ik heb het kunnen oplossen met de uitleg die je mij gaf. Nu wist ik tenminste waarom hij deed wat hij deed. :)

Probleem 2 heb ik opgelost met de oplossing die je mij gaf.

Probleem 1 heb ik op een andere manier opgelost dan met de margins (nooit gebruikt en ik zou bij god niet weten hoe ik het goed zou moeten toepassen met mijn tabellen).
Dankzij jouw uitleg over probleem 2 wist ik dat de plaatsing van het menu samenhing met de plaatsing van de <a href> van mijn menu. Ik weet ook dat het css commando align:center gebruik voor die <a href>. Dus de div van het menu wordt vanaf de linkerkant van de <a href> geplaatst. Dit kon ik dan simpel oplossen door een <div style="align:left"> op te geven rond de div van mijn menu.
En presto:
Afbeeldingslocatie: http://www.x-pc.info/got/dhtmlmenu-ie2.gif

Ik wist dat het een simpel probleempje was, je moet alleen even weten waar je het moet zoeken. :)

Nu nog even browser detectie inbouwen zodat hij verschillende px instellingen voor de top style gebruikt. :)

<HunterPro> HAL: is Excru intelligent?
<HAL> HunterPro: Hijs weer lekker intelligent.
* Excru aait HAL


  • Excrusiator
  • Registratie: Juli 2000
  • Laatst online: 18-02 20:19
Op zaterdag 30 maart 2002 13:33 schreef akakiwi het volgende:
Niet lullig bedoeld, maar, wat is de toegevoegde waarde van het aanpassen van een site voor andere browsers dan IE???
[no flame intended]

90%!! :'( van de webgebruikers gebruikt namelijk IE, ipv Netscape, Opera.... etc. etc.
Ikzelf optimaliseer geen sites meer voor andere browsers, omdat het simpelweg te veel moeite is, en te weinig toegevoegde waarde heeft. >:)
Ik doe het om de volgende reden:
ik = geek
familie = not geek (en sommige gebruiken andere browsers dan IE)
website = goofed up in andere browser
result: familie = hahaha, en jij bent een computer freak. je kunt nog niet eens je website goed werkend krijgen.

Snappie ;)
En persoonlijk vind ik het slordig als je website niet werkt in andere browsers. Maa ik ga echter niet alle kleine schoonheidsfoutjes uitzoeken en repareren. Maar wel de grove zoals die met mijn menu.

<HunterPro> HAL: is Excru intelligent?
<HAL> HunterPro: Hijs weer lekker intelligent.
* Excru aait HAL


Verwijderd

Laatste tijd komen er zoveel vragen langs over dit soort menu's. Is er niet iemand die gewoon een "perfect" javascript/dhtml-dropdownmenu heeft gemaakt, ik heb zelf wel eens die van bratta.com geprobeerd maar die is wat code betreft weer zoooo uitgebreid dat je er veel te veel overbodige functies in zitten die je helemaal niet nodig hebt.

Misschien is het iets om met z'n allen te maken in dit topic?

  • Excrusiator
  • Registratie: Juli 2000
  • Laatst online: 18-02 20:19
Op zaterdag 30 maart 2002 13:55 schreef PyroDaan het volgende:
Laatste tijd komen er zoveel vragen langs over dit soort menu's. Is er niet iemand die gewoon een "perfect" javascript/dhtml-dropdownmenu heeft gemaakt, ik heb zelf wel eens die van bratta.com geprobeerd maar die is wat code betreft weer zoooo uitgebreid dat je er veel te veel overbodige functies in zitten die je helemaal niet nodig hebt.

Misschien is het iets om met z'n allen te maken in dit topic?
Die bestaat jammer genoeg niet is ook een onmogelijke opgave om te maken. Elke website is anders kwa opbouw (en dan hebben wij het nog niet eens over asp, php, java (1.1 en 1,2), css1 en 2, html, xhtml, xml, enz.).

Wat je wel kan doen is simpele dingetjes maken zoals in [topic=430979/1/25] zodat mensen deze stukken code kunnen gebruiken en dan ervan leren in plaats van copy & paste werk te gaan doen. Als je mijn code vergelijkt met de originele code zie dat ik flink heb zitten te sleutelen aan de html kant (in mijn geval xhtml ;) ) om hem zo te krijgen zoals ik wil. Als je dat alleen al ziet denk ik je wel kunt begrijpen wat voor een onmogelijke taak het is. Alhoewel een goede uitdaging voor diegenen die zich eraan wagen. :P

Ik denk dat het wel een idee is om topics zoals [topic=430979/1/25] in een soort FAQ voor got op te nemen met een paar customizing topics zoals deze erbij zodat mensen kunnen kijken hoe ze iets kunnen maken en mogelijke oplossingen voor problemen. Met zoiets help je heel veel mensen.

Dus gewoon de basic scriptjes verzamelen en laat de tweakers het maar customizen, daar zijn we toch tweakers voor. :Y)

<HunterPro> HAL: is Excru intelligent?
<HAL> HunterPro: Hijs weer lekker intelligent.
* Excru aait HAL


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 23:34

crisp

Devver

Pixelated

Je kan gewoon geen kant-en-klaar dhtml menu script maken dat aan ieders wensen voldoet. Je krijgt dan inderdaad een code die zooo uitgebreid is dat het weer te ingewikkeld wordt.
Topicstarter gaf al aan aan de hand van de snippets uit andere topics dit menu in elkaar gezet te hebben. Ik denk dat we dan ons doel bereikt hebben: inzicht geven in hoe het werkt en hoe het globaal op te lossen is.
Hier en daar wat vraagjes over specifieke probleempjes zijn helemaal niet erg imho.

Zelf werk ik veel met relatieve div's. Probleem is dan dat Opera daar niet mee om kan gaan omdat die browser de pagina 'statisch' rendert.
Op zaterdag 30 maart 2002 13:33 schreef akakiwi het volgende:
Niet lullig bedoeld, maar, wat is de toegevoegde waarde van het aanpassen van een site voor andere browsers dan IE???
[no flame intended]

90%!! :'( van de webgebruikers gebruikt namelijk IE, ipv Netscape, Opera.... etc. etc.
Ikzelf optimaliseer geen sites meer voor andere browsers, omdat het simpelweg te veel moeite is, en te weinig toegevoegde waarde heeft. >:)
Hier ben ik het absoluut niet mee eens. Voor een intranet in een bedrijf waar iedereen met IE browsers werkt hoef je geen rekening te houden met andere browsers. In de echte wereld werkt 10% (naar je eigen cijfers) echter met alternatieve browsers. Deels uit vrije wil, deels omdat IE niet alle platformen ondersteund (linux, BSD etc).
Deze 10% uitsluiten (ligt natuurlijk helemaal aan je doelgroep, maar laten we uitgaan van een zo breed mogelijk georienteerde site) is dus gewoon puur discriminatie.
IE is ook niet zaligmakend; als iedereen maar alleen IE-gericht gaat programmeren, dan krijgen we straks ook een door Microsoft gedomineerd internet. Daar weiger ik aan mee te werken...

Intentionally left blank


Verwijderd

Op zaterdag 30 maart 2002 14:31 schreef crisp iets waar ik het roerig mee eens ben:
met een kleine toevoeging, ik vindt het een teken van incompetentie als je dat niet doet. Mijn werkwijze is dat je begint met de DOM browsers en dan evt. downwards compatible maken met de 4e generatie browsers (mocht dit uberhaupt nodig zijn).

en laten we eerlijk wezen zo moeilijk is het toch niet?
Pagina: 1