【问题标题】:text-indent minimum negative value文本缩进最小负值
【发布时间】:2012-10-01 07:50:31
【问题描述】:

text-indent 属性的允许的最小值是多少?

我在我的网站中使用了一个异常巨大的值(例如 text-indent: -99999999px),并且它停止了与上次 Google Chrome 更新一起使用。 IE 仍然可以正常工作,但我可能需要从那里删除几个 9 才能使其再次与 Chrome 一起工作。

免责声明:是的,这个值有点太偏执了,我用它来取乐并完全忘记了它,直到今天屏幕上弹出了文字。但是通常建议的text-indent: -9999px 可能会在(不是那么)遥远的未来的某个时候轻易失败?

【问题讨论】:

  • 再添加一个 9 : -99999px
  • @chovy:哈哈,谢谢。好吧,我只是想知道是否存在已知限制。

标签: css text-indent


【解决方案1】:

安全值可能-32768px,但这不是规范的一部分,而是对(可能过时的)特定于实现的遗留限制的观察。

在渲染时将 CSS 属性值应用于元素之前,必须将这些声明解析为比字符串更可操作和更抽象的东西。我的意思是,您几乎可以键入任何东西作为属性值:

.a {text-indent: -999px;}
.b {text-indent: -99999999px;}
.c {text-indent: medium potato;}

第一个例子会被正确解析;最后一个是无效的,将被忽略(因为中等土豆目前不是 w3c CSS 规范的一部分);但是如果它overflow (不“适合”浏览器分配的内存),中间的会很古怪。我整理了一个小提琴,这些是浏览器“阻塞”并默认为零的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

这让我很好奇,明天我会在另一个盒子上运行更多测试。 上面的结果更新了,没什么太兴奋的。 You can also run your own test using this fiddle - 第一个仍然可见的项目将显示应用的值被忽略。 我假设这些值会根据所使用的浏览器/操作系统以及可能硬件而有所不同。

我记得第一次在an article on styling faux columns^ 中看到practical 对这种限制的引用,该引用表明保守约束是 16 位有符号整数(从 -32768 到 +32767)——它不仅适用于 文本缩进,还适用于其他长度值。我不知道这个值在不同浏览器及其版本之间的一致性如何,也不知道它对于以不同单位表示的分数或值的适用性。

【讨论】:

  • 谢谢!这是一个很好的答案。我看到那个网站提到了 16 位的限制,然后偶然发现了 this thread,它提到了 Chrome 中 z-index 的一个相当大的最大值。
【解决方案2】:

没有最小文本缩进 - 我之前只使用了几个像素,但这是用于布局/设计的坏习惯,确保在等离子大小的布局 99999 像素上查看时它会滚动到屏幕外 - 绰绰有余- 如果您仍想查看文本并用于样式设置,请使用边距填充和位置。

【讨论】:

  • 对不起,我不明白,“没有最小文本缩进”是什么意思?
  • 您要求“文本缩进的最小允许负值”。您可以缩进 -1px 或 -9999px,但没有最小值。但是,如果您使用 -1px 或 -10px 等(低数字)之类的东西,您只会真正使用它来设置样式,而这并不是它的本意。它应该仅用于出于视觉目的将文本滚动到屏幕外,但允许屏幕阅读器等仍然按照文档流读取它,而不管它是否离开屏幕。希望这会有所帮助。
  • 但是,我还是不明白你说的“没有最低限度”是什么意思。在计算中,使用数值总是有限制的。你读过@ov's answer吗?谷歌浏览器中显然至少有 -2^26,这对于我最初使用的值失败。
  • 那你想达到什么目的?你需要这个在网络上有用的东西吗?您的示例返回 -67,108,864 / 为什么需要这样做。如果您需要滚动屏幕,只需使用 -999999px - 对于可预见的未来,这应该足够安全。
【解决方案3】:

我在 ipad safari 中使用 99999em 时遇到问题,我已将其设置为 9999em。 所以也许没有限制,但应该是避免这种错误的限制。

【讨论】:

    猜你喜欢
    • 2013-04-10
    • 1970-01-01
    • 1970-01-01
    • 2017-11-18
    • 2022-01-11
    • 1970-01-01
    • 2021-07-14
    • 2019-06-24
    • 2017-03-18
    相关资源
    最近更新 更多