585 votes

Valeur minimale et maximale de z-index ?

J'ai un div dans ma page HTML. J'affiche cette division en fonction de certaines conditions, mais la division s'affiche derrière l'élément HTML où j'ai pointé le curseur de la souris.

J'ai essayé toutes les valeurs de z-index de 0 à 999999. Quelqu'un peut-il me dire pourquoi cela se produit ?

Existe-t-il une valeur minimale ou maximale pour la propriété Z-INDEX de CSS ?

.divClass {
     position: absolute; 
     left: 25px; 
     top: 25px; 
     width: 320px;
     height: 300px; 
     z-index: 1000; 
}

<table cellspacing="0" cellpadding="0" width="100%">
  <tr>
    <td>
      <asp:HyperLink ID="lnkProgram" runat="server"></asp:HyperLink>
    </td>
  </tr>
  <tr>
     <td>
         <div class="divClass">
           Some Data
         </div>
     </td>
  </tr> 
</table>

J'affiche et cache le div avec .divClass onclick via le <asp:hyperlink> en utilisant jQuery.

0 votes

Le problème n'est probablement pas lié au z-index en particulier. Pouvez-vous donner des exemples HTML et CSS qui illustrent ce comportement ? Dans quels navigateurs le problème se pose-t-il ?

0 votes

Par curiosité, pourriez-vous essayer de faire la même chose sans utiliser le tableau, avec juste du contenu, le lien et le div. Mettez également une couleur de fond sur le div, juste pour être sûr pendant le développement.

93 votes

"a essayé toutes les valeurs de la propriété Z-INDEX de 0 à 999999". Je trouve cela difficile à croire.

346voto

Tamas Czinege Points 49277

http://www.w3.org/TR/CSS21/visuren.html#z-index

z-index

Valeur : auto | <integer> | inherit

http://www.w3.org/TR/CSS21/syndata.html#numbers

Certains types de valeurs peuvent avoir des entiers (désignées par <initiale>) ou des valeurs des valeurs réelles (désignées par <number>). Les nombres réels et les entiers sont spécifiés en notation décimale décimale uniquement. Un <nombre entier> consiste en un ou plusieurs chiffres de "0" à "9". Un <nombre> peut être soit un <intégral>, soit être constitué de zéro ou de plusieurs chiffres suivis d'un point (.) suivi d'un ou plusieurs chiffres. Les deux nombres entiers et réels peuvent être précédés d'un "-" ou "+" pour indiquer le signe le signe. -0 est équivalent à 0 et n'est pas n'est pas un nombre négatif.

Notez que de nombreuses propriétés qui permettent un nombre entier ou réel comme valeur restreignent en fait la valeur à une certaine plage, souvent à une valeur non négative.

En fait, il n'y a pas de limitations pour la valeur z-index dans la norme CSS, mais je suppose que la plupart des navigateurs la limitent à des valeurs signées de 32 bits (2147483648 à +2147483647) dans la pratique (64 serait un peu exagéré, et cela n'a pas de sens d'utiliser moins de 32 bits de nos jours).

21 votes

Il est important de noter que la valeur maximale de z-index sur Safari 3 était de 16777271. Cette valeur a été portée à la norme 32 bits dans Safari 4. Il s'agit donc d'un problème uniquement si vous ciblez des navigateurs plus anciens. De plus, même dans Safari 3, tout ce qui est supérieur à 16777271 est plafonné à cette valeur, donc à moins que vous n'utilisiez des valeurs d'indice z absurdement grandes pour ordonner plusieurs éléments, vous ne devriez pas avoir de problème (c'est-à-dire que si vous définissez un élément avec une valeur d'indice z de 2147483647, cet élément restera tout en haut dans n'importe quel navigateur, à moins qu'il ne soit en concurrence avec un autre élément qui a également un indice z > 16777271).

9 votes

@DoktorJ Quelqu'un sait-il pourquoi c'est 16777271 ? Il semble bizarre que ce soit 56 de plus que la limite d'un entier non signé de 24 bits.

2 votes

@Jools selon le développeur de webkit Eric Seidel c'est le résultat de l'utilisation d'un champ de bits de 24 bits - log base 2 (lg) = lg(16777271)

178voto

Ran Points 3202

Mes tests montrent que z-index: 2147483647 est la valeur maximale, testé sur FF 3.0.1 pour OS X. J'ai découvert un bug de débordement d'entier : si vous tapez z-index: 2147483648 (qui est 2147483647 + 1) l'élément passe juste derrière tous les autres éléments. Au moins, le navigateur ne se plante pas.

Et la leçon à retenir est qu'il faut se méfier d'entrer des valeurs trop grandes pour le paramètre z-index car ils s'enroulent autour.

71 votes

Parce que ce (2147483647) est la plus grande valeur positive d'un entier signé sur un système d'exploitation 32 bits...

4 votes

Je ne pense pas que le nombre envelopper si la valeur est supérieure à 2147483647... Je pense qu'il est plus probable que les navigateurs traitent simplement tout nombre supérieur à cette valeur comme une valeur constante, par exemple 0.

4 votes

Peut-être que votre valeur est devenue négative... Par exemple -2147483647

28voto

Mohammad Points 1787

Par expérience, je pense que le maximum correct z-index est 2147483647.

13 votes

On dirait que vous avez tort. D'après les tests effectués en 2009 par Eric Poidokas, la valeur maximale de l'indice z (sans risque de faire tomber des éléments en cas de débordement) est de 2147483647.

24voto

magikMaker Points 434

C'est la valeur maximale d'un entier de 32 bits : 2147483647.

Voir aussi les docs : https://www.w3.org/TR/CSS22/visuren.html#z-index (Les nombres négatifs sont autorisés)

21voto

pdr Points 4795

Cela dépend du navigateur (même si la dernière version de tous les navigateurs devrait plafonner à 2147483638), tout comme la réaction du navigateur lorsque le maximum est dépassé.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X