Avatar billede goodpeace Nybegynder
29. marts 2005 - 21:51 Der er 14 kommentarer og
1 løsning

Layers i vandret menu med undermenuer vises forkert i firefox

Jeg har overtaget noget gammel (men hidtil velfungerende) kode til en vandret menu med undermenuer. Desværre er placeringen af disse undermenuer ikke korrekt i FF; de hopper rundt oveni menuen istedet for at poppe up lige nedenunder hvert menu punkt.

Se siden her:

http://www.fifa-forever.dk/

koden til menuerne kan ses i kilden til siden, så jeg ved ikke om det er nødvendigt at skrive den her.

Er der nogle ideer til hvad der relativt let kan gøres for at få menuerne vist pænt i FF ?
Avatar billede olebole Juniormester
29. marts 2005 - 22:10 #1
<ole>

Et HTML-dokument _skal_ begynde med en DTD (DocType Definition) som f.eks:
  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
- og den skal indsættes før <html>-tag'et. Gør du ikke det - eller udelader du URL'en i DTD'en - kan du ikke bruge CSS i IE. Den kan simpelthen ikke tolke CSS's box-model uden.

Med andre ord, er det højst sandsynligt, det er FF, der viser menuen, som den er skrevet  ;o)

/mvh
</bole>
Avatar billede olebole Juniormester
29. marts 2005 - 22:11 #2
PS: Når du sætter DTD'en ind i dine dokumenter, skal de sikkert skrives en del om. Det er blot fordi, browserne nu forstår din kode - og at den ikke er skrevet på den måde, du egentlig ønsker det
Avatar billede goodpeace Nybegynder
29. marts 2005 - 22:55 #3
Du har formentlig ret mht DTD, men det er bare ikke rigtigt et tip der nytter så meget lige her. Hvis din ide om at siden vises korrekt i FF og forkert i IE skulle holde, så er det godt nok utroligt at den er så præcis under menuerne i IE, og helt hoppet rundt i FF - men det kan du jo selv se, hvis du lige kigger på siden i hver af de to browsere.
Avatar billede goodpeace Nybegynder
29. marts 2005 - 23:03 #4
....men det skulle da ikke skade mig at efterprøve din teori, og det eneste der kom ud af det, var at menuerne nu er skubbet en smule til siden i IE, og stadig er skævt placeret både lodret og vandret i FF.

andre gode ideer?
Avatar billede olebole Juniormester
29. marts 2005 - 23:25 #5
Under alle omstændigheder bør du indsætte DTD'en og rette de fejl, der måtte opstå. Det gør koden bedre performende, fordi browseren ikke skal gætte og prøve sig frem - men det gør den også lettere at vedligeholde.

Fejlen opstår sikkert, fordi du ikke sætter enhed på left- og top-værdier. Det burde ingen browser forstå, men IE gætter på, hvad du mente  :)

} else if (document.getElementById) {
    var w = document.documentElement.offsetWidth;
    if(w>780) w = (w-780)/2; else w = 0;
    document.getElementById('menu1').style.top = 150 + "px";
    document.getElementById('menu2').style.top = 150 + "px";
... osv ...

- eller bare:

} else if (document.getElementById) {
    var w = document.documentElement.offsetWidth;
    if(w>780) w = (w-780)/2; else w = 0;
    document.getElementById('menu1').style.top = "150px";
    document.getElementById('menu2').style.top = "150px";
... osv ...

- og når du laver en beregning, skiller du sammenlægningen fra konkateneringen (hvilket desværre sker med et '+' for begges vedkommende i JS) med en parentes:
   
    document.getElementById('menu1').style.left = (95+w) + "px";
    document.getElementById('menu2').style.left = (170+w) + "px";
... osv ...
Avatar billede goodpeace Nybegynder
29. marts 2005 - 23:59 #6
ja, du har nok ret med DTD, men der er så hulens mange sider at gå igennem for småfejl, så det må lige komme p åto-do listen :)

Jeg er for træt nu, men afprøver dit svar imorgen - på forhånd tak for hjælpen :)
Avatar billede goodpeace Nybegynder
30. marts 2005 - 16:43 #7
så har jeg prøvet at rette til, så der er en enhed på hver top/left angivelse, men den er stadig lidt skæv i FF, og helt pæn i IE.

- der var iøvrigt ikke noget problem med DTD i IE alligevel, my bad :(
Avatar billede olebole Juniormester
30. marts 2005 - 16:45 #8
Jeg kan ikke se ændringer - og kan jo så heller ikke vide, hvad der sker, eller hvordan der evt. skal rettes  :)
Avatar billede goodpeace Nybegynder
30. marts 2005 - 21:01 #9
sorry, havde skrevet en #include forkert i default3.asp. Jeg har lavet de ændringer du forelog på de 4 blokke i starten hvor der angives top/left værdier.
Avatar billede olebole Juniormester
30. marts 2005 - 21:18 #10
Ja, men jeg kan ikke se, hvad der sker med de ændringer. Du bliver nødt til at lade ændringe afspejle sig i det, vi kan se ... ellers er det temmelig vanskeligt at hjælpe  :)
Avatar billede goodpeace Nybegynder
30. marts 2005 - 21:22 #11
Jeg er ikke sikker på jeg forstår hvad du mener :-?
Avatar billede goodpeace Nybegynder
30. marts 2005 - 21:35 #12
nu har jeg prøvet at lave den her lille testside, så det er nemmere at overskue hvad der sker:

http://www.fifa-forever.dk/testmenu.asp

- hvis man ser på de to menuer i hhv FF og IE, så kan man se, at i FF er undermenuen lige en linie højere oppe end den er i IE...
Avatar billede goodpeace Nybegynder
18. juli 2005 - 23:06 #13
ja, nu virker det.

Det var nok en kombination af rettelsen med enhederne, og derudover at der skulle bruges både:
document.all.menu1.style.left = 116+w;  - type
og
document.getElementById('menu1').style.left = 116+w;  - type
og
document.layers.menu1.left = 116+w; - type
Avatar billede goodpeace Nybegynder
18. juli 2005 - 23:07 #14
olebole, smid et svar, hvis du vil ha lidt point for det....
Avatar billede goodpeace Nybegynder
27. maj 2006 - 11:44 #15
olebole, smid lige et svar ind, hvis du vil have point - du er vist den der fik ledt mig på rette spor :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester