ChatGPT解决这个技术问题 Extra ChatGPT

z-index的最小值和最大值?

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

我已经尝试了从 0 到 999999 的所有 z-index 值。谁能告诉我为什么会这样?

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

.divClass { 位置:绝对;左:25px;顶部:25px;宽度:320px;高度:300px; z 指数:1000; }

一些数据

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

这个问题可能与 z-index 无关。你能给出一些说明这种行为的示例 HTML 和 CSS 吗?您在哪些浏览器中遇到这种情况?
“尝试了从 0 到 999999 的 Z-INDEX 属性的所有值”。我觉得很难相信。
@Krumia我没有,他可以用JS尝试0-999999之间的所有z-index值......只是一个选择......
实际上没有人在他的 CSS 中提到 display: none
@MarkBaijens 没有人提到它,因为问题说它是通过jQuery单击锚元素时显示的。但由于其他 3 位用户和您一起错过了这一点,我已经将其编辑为不可能的,以避免将来出现任何混淆。

f
f.ardelian

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

'z-index' 值:自动 | <整数> |继承

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

某些值类型可能具有整数值(由 表示)或实数值(由 表示)。实数和整数仅以十进制表示法指定。 由一个或多个数字“0”到“9”组成。 可以是 ,也可以是零个或多个数字,后跟一个点 (.),后跟一个或多个数字。整数和实数前面都可以用“-”或“+”表示符号。 -0 相当于 0,不是负数。请注意,许多允许整数或实数作为值的属性实际上将值限制在某个范围内,通常是非负值。

所以基本上 CSS 标准中的 z-index 值没有限制,但我猜大多数浏览器在实践中将其限制为带符号的 32 位值(-2147483648 到 +2147483647)(64 会有点偏离顶部,而且它这些天使用小于 32 位的任何东西都没有意义)


重要的是要注意 Safari 3 上的最大 z-index 值为 16777271。这在 Safari 4 中被提升为 32 位标准,因此如果您针对的是较旧的浏览器,这只是一个问题。此外,即使在 Safari 3 中,任何高于 16777271 的内容都会受到限制,因此除非您使用大得离谱的 z-index 值来订购多个元素,否则您不应该有问题(即将一个元素设置为 z-index 值 2147483647将确保该元素在任何浏览器中都保持在最顶部,除非它与另一个 z-index > 16777271 的元素竞争)。
@DoktorJ有谁知道为什么是16777271?看起来很奇怪,它比 24 位无符号整数的限制多 56。
@Jools according to webkit dev Eric Seidel,这是使用 24 位位域的结果 - log base 2 (lg) = lg(16777271)
@Janosch 对不起,我不明白。 lg(16777271) 大于 24。我原以为 24 位位域不够大。
@Janosch,2^24 = 1677721616777271 因此需要 25 位。
C
Cesare

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

要吸取的教训是,您应该注意不要为 z-index 属性输入过大的值,因为它们会环绕。


因为这 (2147483647) 是 32 位操作系统上带符号整数的最大正值...
如果该值超过 2147483647,我认为该数字不会环绕...我认为浏览器更有可能将超过该值的任何数字视为常数值,例如 0。
也许你的价值只是变成负数......例如-2147483647
在超过 2147483648 的现代浏览器中不会将元素移动到其他元素后面
M
Mohammad

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


好像你错了。根据 Eric Poidokas 在 2009 年进行的测试,最大 z-index 值(没有溢出时丢弃元素的风险)为 2147483647。
m
magikMaker

它是 32 位整数的最大值:2147483647

另请参阅文档:https://www.w3.org/TR/CSS22/visuren.html#z-index(允许使用负数)


V
Viktor

这取决于浏览器(尽管所有浏览器的最新版本应最大为 2147483638),超过最大值时浏览器的反应也是如此。


r
roborourke

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

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


我用过“z-index:-1;”之前“下沉”一个元素,所以它不能被点击。这可能不是一个流行的解决方案,但它确实有效。 :P
我知道这有点晚了,但它也适用于 position:fixed 。
AFAIK,z-index 值可以使用负整数。
我想知道为什么我指定 z-index:1000,但浏览器告诉我实际的 z-index 是自动的。位置可以解决问题。
B
Behnam Mohammadi

结论 最大 z-index 值为 2,147,483,647,超过此值转换为 2,147,483,647

‌Browser Maximum More Than Maximum Chrome >= 29 2,147,483,647 2,147,483,647 Opera >= 9 2,147,483,647 2,147,483,647 IE >= 6 2,147,483,647 2,147,483,647 Safari >= 4 2,147,483,647 2,147,483,647 Safari = 3 16,777,271 16,777,271 Firefox >= 4 2,147,483,647 2,147,483,647 Firefox = 3 2,147,483,647 0 Firefox = 2 2,147,483,647 Bug : 标签隐藏

在 BrowserStack 中测试的所有值。


K
Kristaps Karlsons

我发现如果 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/  


当我们讨论这个话题时,另一个常见的问题是没有 position: relative; 或类似的东西。
实际上,只需重新阅读原始帖子即可。你是对的,这可能是他的问题。
R
Rocky

上面的一位用户说:“嗯,对于大多数设计,你永远不需要超过 10。”

根据您的项目,您可能只需要 z-indexes 0-1 或 z-indexes 0-10000。您经常需要以较高的数字播放...特别是如果您使用灯箱查看器(9999 似乎是标准,如果您想超过他们的 z-index,您需要超过它!)


N
NNL993

存在使用 calc() 为 z-index 写入最大值和最小值的超级简单方法。

最大值:

#some-id {
  z-index: calc(9e999)
}

最小值:

#some-id {
  z-index: calc(-9e999)
}

calc() 浏览器兼容性( 值支持)

火狐 - 48+

野生动物园 - 7+

浏览器 - 9+

歌剧 - 18+

铬 - 31+

边缘 - 12+


C
Creshal

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

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