Z索引的最小值和最大值?


517

我的HTML页面中有一个div。我正在根据某些条件显示此div,但是div显示在指向鼠标光标的HTML元素后面。

我尝试了所有0-999999的z-index值。有人可以告诉我为什么会这样吗?

CSS的Z-INDEX属性是否有最小值或最大值?

.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>

我正在.divClass通过<asp:hyperlink>使用jQuery 通过onclick 显示和隐藏div 。


问题可能与z-index无关。您能否举一些说明行为的HTML和CSS示例?您在哪些浏览器中遇到这种情况?
roryf

只是出于兴趣,您可以不使用表,仅提供一些内容,链接和div而尝试相同的事情。还要在div上放一个背景色,以便在开发时确定。
roborourke

60
“从0-999999尝试了Z-INDEX属性的所有值”。我觉得很难相信。
sampathsris 2014年

4
@Krumia我不知道,他可以尝试使用JS在0-999999之间的所有z-index值...只是一个选择...
FullyHumanProgrammer15年

4
没人display: none在他的CSS中提到过吗?
Mark Ba​​ijens

Answers:


386
┌──────────────────────┬───────────────────┬──────────────────────────────────┐
│ Browser              │ Max z─index value │ When exceeded, value changes to: │
╞══════════════════════╪═══════════════════╪══════════════════════════════════╡
│ Firefox 0 - 2        │ 2147483647        │ element disappears               │
├──────────────────────┼───────────────────┼──────────────────────────────────┤
│ Firefox 3            │ 2147483647        │ 0                                │
├──────────────────────┼───────────────────┼──────────────────────────────────┤
│ Firefox 4+           │ 2147483647        │ 2147483647                       │
├──────────────────────┼───────────────────┼──────────────────────────────────┤
│ Safari 0 - 3         │ 16777271          │ 16777271                         │
├──────────────────────┼───────────────────┼──────────────────────────────────┤
│ Safari 4+            │ 2147483647        │ 2147483647                       │
├──────────────────────┼───────────────────┼──────────────────────────────────┤
│ Internet Explorer 6+ │ 2147483647        │ 2147483647                       │
├──────────────────────┼───────────────────┼──────────────────────────────────┤
│ Chrome 29+           │ 2147483647        │ 2147483647                       │
├──────────────────────┼───────────────────┼──────────────────────────────────┤
│ Opera 9+             │ 2147483647        │ 2147483647                       │
└──────────────────────┴───────────────────┴──────────────────────────────────┘

4
我相信他的意思是负面的。
加文2014年

41
您是怎么想到这些的?
2540625

手机Safari / Chrome / Firefox有没有数字?
2540625

30
对于那些感兴趣的人,2,147,483,647 = 2^31 - 1。这是梅森素数。
雷吉·平克汉姆

2
@BehnamMohammadi,标准行为应该是什么?
Pacerier's

305

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

'z-index'

:自动| <整数> | 继承

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

某些值类型可能具有整数值(由<integer>表示)或实数值(由<number>表示)。实数和整数仅以十进制表示法指定。<整数>由一个或多个数字“ 0”至“ 9”组成。<数字>可以是<整数>,也可以是零个或多个数字,后跟一个点(。),后跟一个或多个数字。整数和实数都可以以“-”或“ +”开头,以表示符号。-0等于0,并且不是负数。

请注意,许多允许整数或实数作为值的属性实际上将值限制为某个范围,通常为非负值。

因此,基本上,CSS标准中的z-index值没有限制,但我想大多数浏览器实际上都会将其限制为有符号的32位值(−2147483648至+2147483647)(64可能会超出顶限,并且这些天使用少于32位的值没有任何意义)


17
请务必注意,Safari 3的最大z-index值为16777271。在Safari 4中已将其提高到32位标准,因此,如果您要定位较旧的浏览器,则只需担心。另外,即使在Safari 3中,超过16777271的任何内容都会受到限制,因此,除非您使用荒谬的大z-index值对多个元素进行排序,否则应该不会有问题(即,将一个元素设置为2147483647的z-index值会确保该元素在所有浏览器中都位于最顶端,除非它与另一个z-index> 16777271的元素竞争)。
Doktor J 2013年

6
@DoktorJ有人知道为什么是16777271吗?奇怪的是它比24位无符号整数的限制大56。
Jools

2
@Jools 根据webkit开发人员Eric Seidel的说法,这是使用24位位域的结果log base 2 (lg) = lg(16777271)
Janosch

2
@Janosch对不起,我不明白。lg(16777271)大于24。我会认为24位位域不够大。
乔尔斯

@Janosch,2 ^ 24 = 1677721616777271因此将需要25位。
Pacerier's

157

我的测试表明,这z-index: 2147483647是最大值,在OS X的FF 3.0.1上进行了测试。我发现了一个整数溢出错误:如果键入z-index: 2147483648(即2147483647 +1),则该元素仅位于所有其他元素之后。至少浏览器不会崩溃。

而且要学习的教训是,您应该注意不要为z-index属性输入太大的值,因为它们会缠绕在一起。


57
因为此(2147483647)是32位操作系统上有符号整数的最大正值...
Badr Hari 2010年

4
我认为,如果该值超过2147483647,该数字将不会回绕 ...我认为浏览器更可能会将超出该值的任何数字视为常数,例如
0。–

3
也许您的价值变成了负数...例如-2147483647
Wahyu Fahmy

3
在现代浏览器中,超过2147483648的元素不会将元素移动到其他元素之后
Zach Saucier 2014年

25

Z-index的最小值为0;最大值取决于浏览器类型。

在此处输入图片说明


4
实际上,z-index可以是负数。带有负z索引的定位元素在堆栈上下文中首先排序,因此它们将出现在所有其他元素的后面。另请参阅文档:w3.org/TR/CSS22/visuren.html#z-index
magikMaker

17
易于复制和粘贴:2147483647
Candlejack '04

Z-index可以是负数,但例如,iOS 11.0.2的Safari使用此属性存在问题。
kris_IV

桑托什,你从哪里得到这些数字的?您是否从Behnam的答案中复制并添加了IE7和IE8?
CPHPython



21

根据经验,我认为正确的最大值z-index是2147483638。


7
好像你错了。根据Eric Poidokas在2009年所做的测试,最大z索引值(不存在溢出时掉落元素的风险)为2147483647。–
马丁

14

Z-Index仅适用于具有position: relative;position: absolute;应用应用于它们的。如果这不是问题,我们将需要查看示例页面以提供更多帮助。

编辑:好医生已经给出了最完整的解释,但是快速的版本是最小值为0,因为它不能是负数,最大值不能为-好吧,对于大多数设计,您实际上都不需要超过10。


5
我用过“ z-index:-1;” 在“下沉”元素之前,使其不能被单击。它可能不是一个流行的解决方案,但它确实起作用。:P
Ty。

17
我知道这有点晚了,但它也适用于position:fixed。
TCCV

7
AFAIK,z索引值可以为负整数。
d -_- b

我想知道为什么我指定z-index:1000,但是浏览器告诉我实际的z-index是自动的。位置可以解决问题。
Will Wu

6

我发现,如果z-index无法正常工作,通常是因为其父/兄弟没有指定的z-index。

因此,如果您有:

<div id="1">
    <a id="2" style="z-index:2"></a>
    <div id="3" style="z-index:1"></div>
    <button id="4"></button>
</div>

项目#3甚至是#4可能正在争夺点击/悬停空间的#2,尽管如果将#1设置为z-index 0,则将z-index的兄弟姐妹放在独立堆栈中现在就在同一个堆栈中并将正确地对z-index进行索引。

这是一个有用且相当人性化的描述:http : //foohack.com/2007/10/top-5-css-mistakes/  


4
当我们讨论主题时,另一个常见的问题是没有position: relative;或类似的问题。
瑞安·泰勒

1
实际上,只需重新阅读原始文章即可。没错,这可能是他的问题。
瑞安·泰勒

5

上面的用户说:“嗯,对于大多数设计,您真的不需要超过10。”

根据您的项目,您可能只需要z-index 0-1或z-indexes 0-10000。您通常需要使用较高的数字...特别是如果您正在与灯箱查看器一起使用(9999是标准格式,并且如果要使其z-index达到最高,则需要超过该数字!)


0

虽然INT_MAX这可能是最安全的选择,但WebKit显然在内部使用双精度,因此允许非常大的数字(达到一定的精度)。LLONG_MAX例如,可以正常工作(至少在64位Chromium和WebkitGTK中有效),但将四舍五入为9223372036854776000。

(尽管您应该仔细考虑是否真的需要这么多的z索引...)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.