32766

Avatar of Chris Coyier
Chris Coyier

DigitalOcean 为您旅程的每个阶段提供云产品。 立即开始使用 价值 200 美元的免费积分!

2011 年 12 月更新:此错误已在 Opera 11.60 中修复。

这是一个有趣数字。 谷歌 搜索 了一些与错误相关的主题。 我之所以会遇到这个问题,是因为我收到了很多这样的邮件。

The AnythingSlider 在 Opera 中无法使用!

他们是正确的……但这似乎是一个相当新的问题,我始终无法弄清楚原因。 事实证明,这一切都归结于 32766。

我过去经常收到使用 AnythingSlider 的用户的邮件,他们添加了 80 多个幻灯片,结果发现它无法正常工作。 原因始终是包装所有幻灯片的内部 <ul> 元素太窄,无法容纳 80 个幻灯片。 它被设置为 9999px 的固定宽度。 正确的答案应该是使包装器的宽度等于单个幻灯片的宽度乘以幻灯片的数量(通过 JavaScript)。 但只是为了偷懒,我就在宽度上添加了一个“9”,使包装器变成了 99999px。 就是这个更改导致 Opera 出现问题。

显然,Opera 无法处理大于 32766px 的宽度。 Opera 论坛中有一个 主题,这意味着我并非孤军奋战。

读者 Erdei Csaba 向我提供了提示

32766px … 是最高有符号 16 位数 (32767) – 1。

Opera 必须将这些值存储为有符号 16 位数。 显然,更高的正值 (> 32767) 被处理为负值。 The CSS1 规范 明确禁止负宽度值,但较新的规范对此没有任何说明。 它们可能认为不需要说明,因为负宽度显然是荒谬的。

简而言之:Opera 中元素的最大宽度为 32766px,这应该得到修复。