Bosmonster schreef op vrijdag 12 november 2010 @ 13:52:
Je zou een beetje kunnen pielen met position:relative of hasLayout om te kijken of dat wat oplost, maar echt een 100% oplossing heb ik er nog niet voor kunnen vinden, zeker niet als je geen background-color kunt gebruiken.
Wat je eventueel ook kunt proberen is de parent-container animeren en kijken of dat iets oplost (eventueel in combinatie met bovenstaande).
Maar het blijft een beetje trial&error...
Het is een probleem wat inherent is aan het DXImageTransform filter wat IE < 9 moet gebruiken om de CSS opacity eigenschap te emuleren. De blend modus die het filter intern selecteert om de verschillende bitmap lagen samen te voegen, kan niet goed overweg met input die gedeeltelijk transparant is.
Exact hetzelfde probleem zie je ook op ClearType tekst. De tekst wordt bij gebruik van dit zelfde filter 'korrelig': pixels die voorheen semi-transparant waren om de weergave van het font te smoothen, nemen ineens een solide zwarte kleur aan.
De doorgaans aangeboden oplossing is inderdaad om het element een achtergrondkleur te geven. Vóór het filter toegepast wordt, wordt de invoer platgedrukt tot één laag (zgn. pre-compositing). De achtergrond kleur mengt met de tekst en het als één geheel aan het filter aangeboden resultaat heeft geen transparantie meer. Dan heb je dus ineens weer het juiste gedrag.
Zelfs al zou je alle neveneffecten, en op randgevallen brekende implementatie details negeren, dan nòg wil je terughoudend zijn met DXImageTransform filters, want ze lekken geheugen als een tierelier. Het devies zou dus inderdaad moeten zijn: dan maar geen fade in/out animaties voor IE, maar jammergenoeg is dat aan klanten meestal niet te verkopen.
[
Voor 14% gewijzigd door
R4gnax op 12-11-2010 20:54
]