2010-06-26 8 views
10

J'ai essayé

de jQuery
$('#divOne').animate({zIndex: -1000}, 2000) 

à cet élément qui a un z-index de 1000, mais il est encore au-dessus des autres éléments?

(Si je Firebug pour le changer à -1000 alors il sera en dessous d'autres éléments)

+0

Pour quel effet voulez-vous aller? L'animation de l'index z ne fera pas beaucoup de bien. Même si l'index z était abaissé progressivement, vous ne remarqueriez qu'une modification (non animée) au point où les valeurs hautes/basses ont changé et sont devenues inférieures aux autres éléments. – munch

+3

@munch: Je peux voir comment cela fonctionnerait. Considérez une pile de cartes et une carte qui ondule dans la pile. Rappelez-vous, cela ne fonctionnera que s'il y a un tas de cartes avec z-index dans la plage entre l'endroit où cet élément commence et -1000 ... –

+0

Y at-il des documents qui dit animate() ne fonctionnera pas pour z- indice? –

Répondre

37

jQuery tente d'ajouter une unité à la valeur de chaque étape de l'animation. Donc, au lieu de 99 ce sera 99px ce qui, bien sûr, n'est pas une valeur zIndex valide.

Il ne semble pas possible de définir l'unité utilisée par jQuery simplement comme une chaîne vide - elle prendra l'unité que vous incluez dans la valeur (par exemple 20% - unité de pourcentage) ou utilisera px.

Heureusement, vous pouvez pirater animate() pour faire ce travail:

var div = $('#divOne'); 

$({ 
    z: ~~div.css('zIndex') 
    // ~~ to get an integer, even from non-numerical values like "auto" 
}).animate({ 
    z: -1000 
}, { 
    step: function() { 
     div.css('zIndex', ~~this.z); 
    }, 
    duration: 2000 
}); 

Pour plus d'informations sur ~~ voir this.

+2

dois donner un +1 juste pour l'information sur ~~! –

+0

Y a-t-il une version minimale de jQuery pour cela? J'ai juste essayé de le faire avec jQuery 1.2.6 et malheureusement, il ne fait rien du tout. J'ai essayé d'ajouter une fonction complète, et même celle-ci n'était pas appelée par l'animation. –

+0

J'ai la même question que Matthew. J'utilise jquery 1.5.1, et je peux voir l'image changer mais sans l'animation.Si quelqu'un a déjà vu ce commentaire et connait la réponse ... merci de le partager avec le monde – peterK

-2

Vous ne pouvez pas animer le zindex. Vous pouvez le définir en utilisant .css.

$("#divOne").css('z-index' , '-1000');

+0

Je pensais que animate() est supposé être capable d'animer n'importe quoi (raisonnable) dans CSS? (quelque chose qui a une valeur scalaire) –

+0

hmm, eh bien je suis encore à voir un navigateur 3D! – redsquare

+2

animer les index z est assez utile pour des choses comme ceci: http://jsfiddle.net/ejvsY/122/ –