2009-05-06 4 views
0

je la classe CSS suivante:CSS: Supprimer la classe avec visibility: hidden/position: absolute ne réafficher pas dans IE6/7

.hidden { 
    visibility: hidden; 
    position: absolute; 
} 

je div avec cette classe là-dessus. Si je supprime la classe, la div ne s'affiche pas. Mais la deuxième fois que je "l'enlève", le div montre. Une idée pourquoi? Voir un exemple autonome en utilisant YUI pour cela:

http://avernet.googlepages.com/ie-visibility.html (code disponible sur Pastie)

Note: Je ne peux pas utiliser display: none dans mon cas (qui aurait autrement travaillé).

Répondre

0

L'utilisation de la technique nudge pour IE fait l'affaire. J'ai ajouté plus d'informations sur ce wiki: recherchez le titre Cell content remains hidden on IE.

Et voici la mise en œuvre du coup de coude que nous utilisons dans le Orbeon Code Forms:

/** 
* Nudge element after a short delay for IE6/7 to force IE to "do the right thing". 
*/ 
nudgeAferDelay: function(element) { 
    if (YAHOO.env.ua.ie != 0 && YAHOO.env.ua.ie <= 7) { 
     window.setTimeout(function() { 
      element.className = element.className; 
     }, ORBEON.util.Utils.getProperty(INTERNAL_SHORT_DELAY_PROPERTY)); 
    } 
} 
0

Cela ressemble à la "position: absolute;". Si vous supprimez cette ligne, cela fonctionne, ou si vous ajoutez

div { position:absolute; } 

cela fonctionne aussi bien.

+0

David: Oui, cela fonctionne sans position: absolute, mais si vous ne mettez pas la position: absolue, alors le contenu que vous cachez prend encore de l'espace sur la page, ce qui n'est pas ce que je veux. – avernet

+2

Pourquoi ne pouvez-vous pas utiliser "display: none;" puis? La seule raison d'utiliser "visiblity: hidden" est de garder l'espace sur la page. – David

+1

@David, certains "widgets" que vous avez dans la div ne s'initialisent pas correctement si le div est caché avec display: none. Au lieu de cela, en utilisant la visibilité: caché et en s'assurant que le div est rendu hors écran résout le problème. Voyez par exemple ce que les gars du YUI ont à dire ici: http://developer.yahoo.com/yui/examples/editor/switch_editor.html (sur cette page, cherchez "It is not recommended"). – avernet

1

Voulez-vous dire display: none au lieu de visibility: hidden?

+0

Non, j'ai besoin d'utiliser la visibilité: cachée dans ce cas. Et ça ne marche pas. D'où le problème. – avernet

+1

Lorsque vous utilisez position: absolute, vous prenez le div hors du flux de documents, il n'y a donc pas de différence entre display: none et visibility: hidden autant que je peux voir. – jeroen

Questions connexes