3

我在 Opera 中遇到大于 2¹⁵ 的 CSS 值的问题,例如width:32999px.
我想知道 CSS 或 HTML 中的值可以有多大,具体取决于浏览器。

4

3 回答 3

4

Opera 有一个错误,将 CSS 值限制为 32766。它们使用有符号的 16 位整数,这会导致限制。这是一个已知问题,希望他们能尽快解决。其他浏览器没有相同的限制,我在其他浏览器的限制上找不到太多,但它们至少是 65535,可能更多。在http://dev.opera.com/forums/topic/242545?t=1269270866&page=1的 Opera 论坛中有一个主题

于 2012-08-28T01:58:24.423 回答
2

我猜你这样做是为了隐藏一些东西。因此,可能有更好的方法来实现您想要实现的目标。

如果您希望在视觉和语义上都从页面中删除某些内容,请使用display: none. 如果您希望某些内容在视觉上从页面中消失但仍占用空间并且在语义上仍然存在(对非视觉用户代理可见),请使用visibility: hidden. 如果您希望某些内容在视觉上从页面中消失,但在语义上仍然存在,但不占用任何空间,您可以尝试添加 aposition:absolute或 aheight: 0或除visibility: hidden.

要回答您最初的问题,您要达到的限制可能是 2^15 - 1 或 32767(如果您考虑四舍五入,请再减少一些)。这是 16 位有符号整数的最大允许数。但是,没有标准说这应该是一个限制;您可能只是遇到了特定于浏览器的限制。

于 2012-08-28T02:02:12.853 回答
1

对此有两个答案:官方的 CSSWG 一个,这将是即将到来的 CSS3 值的要求(应该很快达到 CR)和实际的一个,什么浏览器,不需要符合 CSS3 值实现。

在 CSS3 值之前,它们不是 的最小最大值,因此不同的浏览器有不同的限制:Opera 为 32767 (2^15-1),IE9 为 2^20-1,其他浏览器更多……</p>

这意味着暂时可以使用的实际最大值是 32767。数字较大的值可能被认为是“无效”或被限制,我不知道。

在 CSS3 Values 的规范工作中,讨论了放置一个合理的最小值的想法。在 2012 年 3 月的草案中,设置了 2^30-1 [3],然后第一次讨论将其降低到 2^24-1,并且完成了另一个将其降低到 IE9 限制 (2^20-1) 的提议 [2 ],最后工作组设置为... 2^27-1。[1]

所以正式地说这是符合 CSS3 的值的当前值。但是……当前的编辑草案 [4](应该是 CR 的 WIP)没有更多的值集。也许这个决定被推到了 CSS4 上。

所以实际限制 (2^15-1) 是当前使用的限制。这是一个最小限制,这意味着浏览器可以自由使用更高的值(不要将更高的值视为无效),并且很可能在几年后会更高(在 2^20-1 和 2 之间) ^31-1,其中 2^24-1 和 2^27-1 是另外两个可能的值)。

与未来限制保持同步的最佳页面是:https ://developer.mozilla.org/en-US/docs/CSS/integer ,它经常更新,或关注邮件列表CSSWG(详细)。

资料来源:[1] 最新决定: http: //lists.w3.org/Archives/Public/www-style/2012Apr/0633.html [2] 先前决定和反提案: http: //lists.w3.org/ Archives/Public/www-style/2012Apr/0530.html [3] 2012 年 3 月工作草案 (2^30):http ://www.w3.org/TR/2012/WD-css3-values-20120308/#integers [4] 最新的编辑草稿(内容可能会在未来被编辑,但在这个答案的时候它不再包含限制):http ://dev.w3.org/csswg/css3-values/#integers

于 2012-08-28T09:06:31.823 回答