2011-07-16 17 views

Respuesta

14

de una combinación de lo que he leído anteriormente, esto es lo mejor que tengo:

$(div).css({ 
     opacity: 0, 
     display: 'inline-block'  
    }).animate({opacity:1},600); 
+0

Usted ahorra mi día –

+0

Simplemente un gran hombre ... Gracias – Novasol

17

Si usa css()?

$("div").fadeIn().css("display","inline-block"); 
+4

No he probado esto, pero tengo la sensación de que podría hacer que el elemento a saltar un poco, ya se cambiaría a 'display: block;' durante la animación, y luego volvería a 'display: inline-block' después de que la animación terminara. Entonces no creo que vaya a funcionar. Aunque valdría la pena intentarlo, así que +1 de todos modos. – Spudley

+0

@Spudley, pensé que también lo intenté con 'position: inline' en lugar de' position: inline-block' para ver si se muestra primero como 'display: block', pero no fue así. http://jsfiddle.net/6DcY9/ Por supuesto, dependiendo del otro código esto puede suceder – Sotiris

+0

Estoy haciendo un 'fadeIn (" rápido "). css ({'display': 'inline-block'})' y no hace que mi diseño salte por completo. Creo que establece la propiedad de la pantalla antes de que termine fadeIn. Además, dado que IE7 no sabe cómo interpretar bloque en línea, estoy comprobando si 'html' tiene una clase de' ie7' y luego '.css ({'display': 'inline', 'zoom': ' 1 '}) 'en su lugar. – Jazzerus

6

yo sugeriría poner una capa de elemento extra dentro del elemento inline-block, y la decoloración de que en su lugar.

<div style='display:inline-block;'> 
    <div id='fadmein'>....</div> 
</div> 

$('#fademein').fadeIn(); 

Sé que es un marcado extra, pero es probablemente la solución más pragmática al problema.

La alternativa sería utilizar el método animate() de JQuery para cambiar la opacidad, en lugar de usar fadeIn(). Esto solo cambiaría la propiedad opacity; por lo que la propiedad display no se tocará.

+0

Dependiendo de cómo haya configurado el contenido, esto puede No es la mejor solución, pero probablemente es la más fácil de implementar y funciona sorprendentemente bien. ¡Muchas gracias! – shmeeps

1

De acuerdo con this question en jQuery Forums, la solución sugerida es cambiar su propiedad de mostrar a block y ponerla en flotación.

+5

gosh no. si estás usando 'inline-block', es porque estás tratando de evitar flotar. – Spudley

+0

Estoy de acuerdo. Pero creo que es un enlace relevante para proporcionar – Simeon