Avatar billede googolplex Novice
30. august 2004 - 00:05 Der er 15 kommentarer og
1 løsning

Hvilken effekt har dette

#wrapper
{
    background: #fff url(/i/pgbg4.gif) repeat;
    color: #333;
    margin: 10px auto;
    padding: 0;
    border: 1px solid #566;
    border-top: 5px solid #566;
    width: 599px;  /* bmh */
    voice-family: "\"}\"";
    voice-family:inherit;
    width: 597px;
}

Hvad gør denne del:

    width: 599px;  /* bmh */   
    voice-family: "\"}\"";
    voice-family:inherit;
    width: 597px;

??
Avatar billede knudgert Nybegynder
30. august 2004 - 00:27 #1
IE har enforkert opfattelse af bredden i bokse, med ovennævnte kode skjules den sidste del for IE, som ikke forstår denne del.
Så IE vil vise boksen med 599 pixels, mens andre browsere viser den i 597 pixels.
IE lægger evt. border og padding til i boksens bredde, hvilket er forkert.

Et meget simpelt eksempel på fejlen kan du se på http://home13.inet.tele.dk/smedpark/doctype/

Og det er så denne fejl, der rettes.
Avatar billede Slettet bruger
30. august 2004 - 07:23 #2
Hvorfor skriver du: "Opera 7.x opfører sig på samme som måde som IE 6" ?
Avatar billede googolplex Novice
30. august 2004 - 11:43 #3
Tak knudgert, kendte godt IE fejlen, men var ikke sikker på hvordan det virkede, smid et svar :)

Kan ovenstående betegnes som et 'hack' ?
Avatar billede Slettet bruger
30. august 2004 - 11:47 #4
Har du/I prøvet at CSS-validere koden?
Avatar billede roenving Novice
30. august 2004 - 12:21 #5
Ingen tvivl om at det er et hack, men jo nødvendigt, fordi IE fejlagtigt indeholder borderen inde i elementets bredde, mens andre gør som box-modellen stipulerer. lægger den udenpå !-)

Man kan så sige at denne slags hacks, som reparerer på en fejl ved at udnytte en anden fejl, principielt er uheldigt, da man jo sagtens kan komme ud for, at producenten reparerer fejlene i 'den forkerte rækkefølge', så hacket holder op med at virke forinden det, det skal reparere på er rettet !o]

En anden indgangsvinkel kunne være at bruge M$-tingen 'conditional comments':

<style type="text/css">
#wrapper{
/*almindelig style*/
}
</style>
<!--[if IE]>
<style type="text/css">
#wrapper{
/*Rettede styles til IE*/
}
</style>
<![endIf]-->

-- som endda kan forfines til at kigge efter version med f.eks. gte (greater than or equal !-)
Avatar billede Slettet bruger
30. august 2004 - 12:33 #6
roenving:
Ok, men hva´ er der så galt i at bruge denne kode (den validerer forresten også fint):

#main_container {        /* IE +5/Win: Width & height: Tillæg 2 x padding (= 0px)  +  2 x border (= 0px)    i alt= 0px */
    position: absolute;   
    top: 50%;
    height: 432px;   
    margin-top: -220px;
    left: 50%;                       
    width: 760px;               
    margin-left: -375px;   
    padding: 0px;
    border: none; }
html>body #main_container {            /*Til Opera og andre browsere. */
    width: 760px;               
    margin-left: -378px;  }

...bare et eksempel.  :-)
Avatar billede Slettet bruger
30. august 2004 - 12:34 #7
...her går man da både med "livrem og seler", ikke også? Eller hvad?
Avatar billede roenving Novice
30. august 2004 - 12:44 #8
Man kunne jo sådan set godt forestille sig, at M$ implementerede > i den næste udgave, men ikke rettede boks-fejlen, så IE lige pludseligt godt forstod den anden selektor !-)
Avatar billede Slettet bruger
30. august 2004 - 13:07 #9
"næste udgave" af hvad? IE 6.01 browseren? CSS 3.0?

Så hvad vil du egentligt anbefale at man skal gøre, for at sikre sig bedst muligt, og med færrest mulighed for at skulle gå tilbage og rette i sine koder?
Avatar billede exp Juniormester
30. august 2004 - 13:12 #10
extend >>
Meget simpelt... følg standarderne...!

De små hacks er, som nævnt, blot elementer der er sammensat for at omgå fejl i forskellige browsere. Er man dybt afhængig af, at boxmodellen (, fejlen i) virker ens i alle browsere, så er ens design ikke fleksibelt nok. Imho.
Avatar billede roenving Novice
30. august 2004 - 13:22 #11
Og CSS2 har været en standard i 6 år, men ikke en eneste browser har implementeret alle dele af denne standard, desværre har den mest udbredte browser de mindste huller mellem fejlene ...
Avatar billede Slettet bruger
30. august 2004 - 13:22 #12
exp:
Jeg følger søremig også standarden (både XHTML 1.0 og CSS), men problemet ligger altså i, at M$ ikke følger standarden! Det er derfor vi bruger disse hacks for at rette IE ind. IE lægger nemlig border og padding TIL i boksens bredde, hvilket er forkert iflg. standarden.
Derfor.  :-)
Avatar billede exp Juniormester
30. august 2004 - 13:46 #13
extand >>
Lige nøjagtig også hvad jeg skriver... og tilføjer, at hvis dit design er afhængigt af at boxmodellens vises 100% korrekt - i alle browsere - så er dit design ikke fleksibelt nok... punktum.

;-)
Avatar billede Slettet bruger
30. august 2004 - 13:55 #14
exp:
Enten fatter jeg ikke hvad du mener, eller også misforstår du et eller andet.
Fordi: Hvad har fleksibilitet med box-model at gøre? Hvis man placerer en box et bestemt sted på sit website, skule den jo gerne være placeret præcis det samme sted, uanset hvilken browser clienten bruger, ikke også? Det er netop det vi snakker om.  :-)

Eller også må du bakke dit udsagn op med et eksempel.
Avatar billede roenving Novice
30. august 2004 - 14:14 #15
Jeg vil erklære mig delvis enig med exp, for hvis man har lavet sit design så stramt, at det vil vælte, hvis en tilfældig border lægges til en bredde eller højde, er man næsten med sikkerhed derude, at det er umuligt at se siden ordentligt med bare et flertal af browserne, så det er en dårlig taktik !-)

-- omvendt er man da også nødt til at forholde sig til virkeligheden, så det med at følge standarderne er en rigtig god idé, men når nu den mest udbredte browser ikke understøtter vigtige dele af standarden, kan det være nødvendigt at bruge mærkelige tricks !o]

-- og så vil jeg helt klart anbefale 'conditional comments', da de netop kun virker i IE, alle andre browsere ser bare en html-kommentar, som de skal overse ...

-- og hvis M$ i en senere version af browseren ændrer noget, så er det nemt at ændre !-)
Avatar billede knudgert Nybegynder
30. august 2004 - 19:11 #16
Tak for points ;-)
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