Az IE7 CSS értelmezése
2006 aug 31 15:49Az MS egy idei júliusi cikke szerint az IE7 közelÃt a css2.1 “dobozmodell” értelmezéséhez. Lássuk ez mit jelent nekünk, illetve hogyan készüljünk rá kódilag.
Az IE7 innentÅ‘l rendesen kezeli a dobozokat, azaz ha egy fix dimenziójú konténerben egy blokk nagyobb mint a konténere, nem fogja emiatt növelni a konténer méreteit - azaz viszlát IE alatt szétesÅ‘ oldalak. De azért csak óvatosan, ez valahol más megközelÃtést követel az oldalak felépÃtésénél, ahogy ezt pl FF alatt tapasztalhatjuk néha.
Szerencsére az MSnél ismerik a termékük okozta balszerencsés kódolási szokásokat, Ãgyhát készültek a srácok, lássuk hát a használható css hekkeket.
IE < IE7 verziókhoz az eddig ismert:
* html .akarmi {
}
IE7 figyelmen kÃvül hagyja az _ kezdetű tulajdonságokat, a korábbiak nem:
.akarmi {
min-height: 300px;
/* minimum magasság 300px, ha a tartalom nagyobb, akkor növekszik */
_height: 300px;
/* ugyanez az eredmény IE6 és társai alatt, de IE7 kihagyja, és nem vágja le a tartalmat */
}
IE < IE7 verziók kihagyják a kommenttel tört tulajdonságokat, IE7 értelmezi
.myclass {
height/**/: 300px;
}
Most tessék vigyázni, ugyanis az eddig használt trükkök is rendesen értelmezve lesznek (remélhetőleg). Tehát:
a child selector >
html > body { }az adjacent selector +
h2 + p { }
Ha nincs más megoldás, ott a sokak által kedvelt trükk, a külön stylesheet. Személy szerint nem kedvelem ezt, mert szeretem egy sitera funkcióspecifikusan tagolni a stÃluslapjaim, nem pedig böngészÅ‘k alapján. A beemelése történhet sokféleképp, talán legegyszerűbb a feltételes komment használata.
Tudom roppant türelmetlen vagyok, de milliószor könnyebb lenne az életünk, ha az IE olyan css szabályokat is felvenne már végre normálisan mint pl. a :before, :after, vagy a content property. (és még sorolhatnánk persze)
http://delawer.freeweb.hu/demo/index.html
A minap belefutottam egy problémába. Eddig ugye az IE6 !important -os sorokat nem értelmezte, a fox igen.
Namármost az IE7 értelmezi ezeket, viszon ugyanúgy eltolja az oszlopokat.
Namost ahogy most olvasom, akkor a _left: 39px !important; -ot nem fogja értelmezni az IE7, de a fox igen, az IE6 meg figyelmen kÃvül hagyja.
Köszi a választ!
ie7 only hekk:
html>body .myClass { *color: #ff0033; }