Long time no see!
Mais je pense avoir découvert un nouvel “holy hack” pour IE6.
Voici le cas de figure : un élément en position absolue n’apparait pas sous IE6 alors que son “HasLayout” est déjà à -1, celui de son parent aussi.
Via la developer toolbar, vous tentez à tout hasard d’appliquer une propriété height à l’élément incriminé… Et bingo, il apparaît !
Vous vous empressez donc de définir la même hauteur via la feuille de style, vous rechargez la page et… rien. L’élément est toujours invisible.
C’est typiquement la situation où l’élément ne va réapparaitre que si vous manipulez l’élément en temps réel via un JavaScript, par exemple document.getElementById(‘mon_element’).style.height = ‘100px’; éxécuté en bas de page résolverait le problème, mais vous ne voulez pas vous embarquer dans un tel bricolage.
Et bien, figurez-vous qu’il existe une propriété CSS qui permet de faire apparaitre normalement l’élément récalcitrant : filter.
En effet, définir filter: none sur l’élément résoud votre problème !
Merci IE6…
Update : Je me rends compte que height: expression(‘0’); permet aussi de résoudre le problème, cela semble assez logique car filtres et expression interviennent en temps réel sur l’élément…
Update bis : appliquée sous IE7 et IE8, cette technique supprime tout antialiasing des textes qui seraient contenus dans l’élément concerné.
IE reverse-engineering truly has no end.