一个安全的值可能是 -32768px
,但这不是规范的一部分,而是对(可能已过时的)特定于实现的遗留限制的观察。
在 CSS 属性值可以在渲染时应用于元素之前,必须将这些声明解析为比字符串更可操作和抽象的东西。我的意思是,您几乎可以键入任何内容作为属性值:
.a {text-indent: -999px;}
.b {text-indent: -99999999px;}
.c {text-indent: medium potato;}
第一个例子,手指交叉,被正确解析;最后一个是无效的,将被忽略(因为中等土豆目前不是 w3c CSS 规范的一部分);但是如果它溢出(不“适合”浏览器分配的内存),中间的会很奇怪。我整理了一个小提琴,这些是text-indent
浏览器“阻塞”并默认为零的值:
#On OSX 10.8 Lion 64bit:
Safari 6 -2^31
Chrome 22 -2^26 #your original -99999999px would have failed here
Firefox 14 -2^70
Opera 12 -2^70
#On Win Server 2008 64bit:
Firefox 13 -2^70
Chrome 21 -2^70
IE 9 -2^70
这让我很好奇,明天我会在另一个盒子上进行更多测试。上面的结果更新了,没什么太兴奋的。您还可以使用此小提琴运行您自己的测试- 第一个仍然可见的项目将显示应用的值被忽略。我假设这些值会根据所使用的浏览器/操作系统以及可能的硬件而有所不同。
我记得第一次在一篇关于样式化假列^ 的文章中看到了这种限制的实际参考,该参考建议保守约束是 16 位有符号整数(从 -32768 到 +32767)——这不仅适用于文本缩进但其他长度值。我不知道这个值在不同浏览器及其版本之间的一致性如何,也不知道它对以不同单位表示的分数或值有多大的适用性。