herlig.net
- ein blog om alt og ingenting. Mest ingenting.
IE-trøbbel, igjen…
For dei av dykk som driv med litt webutvikling og følger alle reglar satt opp av organisasjonar - så veit de at Internet Explorer er litt dum av og til. Eg trur eg har oppdaga nok en dum ting denne nettlesaren presterer å gjere, og har gjort eit forsøk her på å forklare det.
Faktisk så oppdaga eg det mens eg holdt på med denne sida her - men det er faktisk ikkje relevant, skal prøve å forklare problemet slik det er.
«Kva er problemet ditt?!»
Problemet - det IE presterar å gjere - er at den bytter om litt på «stablingsrekkefølgen» («Stack order») til element. I tilfellet eg oppdaga dette, så hadde eg to «hoved-containerar» - den eine inni den andre - for å løyse problem som hadde litt med layout å gjere. Hittil gjekk alt greit. For å slette litt tomrom som kom over pga. ei overskrift med litt for mykje kvitt tomrom, så tenkte eg å legge til litt negativ marg i toppen av containeren som inneheld alt av innhold på sida. Dette fungerte heilt ålreit, det - bortsett frå i vår kjære folkefiende, IE. Her blei faktisk bakgrunnen i overskrifta lagt oppå innholdet. Dette skal jo ikkje skje, det som ligg nederst/«innerst» i koden skal jo strengt tatt alltid teiknast øverst i nettlesarane, ikkje?
Om du tar ein titt på problemet i både Opera, Firefox/Mozilla - og selfølgelig i IE, så oppdagar du fort feilen. Du ser kanskje at den røde blokka øverst legg seg over teksten i IE? Dette til tross for at ifølge all logikk skal teksten ligge øverst.
Kvifor, igrunn?
Anar ikkje, eigentleg, men etter litt miksing og triksing, så fant eg ut at problemet forsvant etter at eg fjerna width-eigenskapen på den innerste innholdscontaineren. Kvifor dette skulle skape/fjerne eit problem forstår eg ikkje, for slik det var opprinnelig så var der ein innholdscontainer inni den andre, der eg hadde satt bredda på begge to for å vere sikker på at ting fungerte, men når eg fjernar bredda på den innerste - så fungerte alt plutselig finfint i IE også. Rart.
Ja - eg veit faktisk at det ikkje er nødvendig å sette bredda på eit blokkelement, sidan den vil ta opp all plass i breidda uansett - men det skal da ikkje skape problem å dobbelt-forsikre meg, vel?
Har eg misforstått noko? Har eg formulert meg dumt eller generelt gjort noko dumt sidan eg har fått til dette, eller er det faktisk berre IE som er dum igjen?