为什么要使用 99.9% 而不是 100% 的 HTML/CSS 宽度?
题
我见过许多开发人员在我要使用 100% 的地方编写了 99.9% 的 HTML 或 CSS 内联样式宽度。使用 99.9% 有什么正当理由吗?和100%有什么有效区别吗?
编辑转发 MSalters 的非常好的问题: Considering that 99.9% is one pixel off above 500 pixels, why not 99.99%?
我猜他是对的 如果你和 dirty hack
你应该使用99.99%,有人不同意吗?
附加参考资料:
- @Michael Stum 关于 CSS 缩放属性的评论让我看到了这个关于触发 hasLayout 的有趣链接
zoom
: http://www.bennadel.com/blog/1354-The-Power-Of-ZOOM-Fishing-CSS-Issues-In-Internet-Explorer.htm. - @Andrew Dunn 在 hasLayout 上提供了这个令人难以置信的全面链接: http://www.satzansatz.de/cssd/onhavinglayout.html
解决方案
这 hasLayout
财产
这是一个肮脏的 hack,用于设置 IE 特定的 hasLayout
元素的属性为 true。这 hasLayout
属性“确定元素如何绘制其内容,与其他元素进行交互并相关,并在和传输应用程序/用户事件上做出反应。”给出一个元素 layout
是修复 Internet Explorer 中出现的许多与布局相关的错误的简单方法。
99.9%是怎么回事?
将宽度设置为 99.9% 是触发它的一种方法。您使用 99.9% 的原因是因为如果元素的布局是给定的 width
设置为除 auto
. 。将其设置为百分比可以避免使用固定宽度。
经过在 jsFiddle 中的一些测试,我得出的结论是,确实没有必要使用 99.9% 的宽度,使用 100% 的宽度也同样有效。 http://jsfiddle.net/3qfjW/2/ (仅限 IE)。好像是这样设置的 width
99.9% 可能是 常见的误解 卡住了.. 传播人们的话。
其他方法
还可以触发 hasLayout
使用 zoom: 1;
虽然这是许多人的首选方法,因为它不会与元素的其他样式相关功能混淆,但它也是无效的 CSS 代码,这对于某些开发人员来说不是一个选择。
进一步阅读
更多触发方法 hasLayout
查看: http://www.satzansatz.de/cssd/onhavinglayout.html
欲了解更多信息 hasLayout
属性查看 MSDN 文章 hasLayout
http://msdn.microsoft.com/en-us/library/bb250481(VS.85).aspx (这实际上是一本很棒的书,有很多详细信息)
其他提示
这是真的 width
除了 auto
和 zoom
触发 hasLayout,并且 zoom
是更灵活的属性/值,因为它不会与宽度混淆,但我不认为这就是您看到开发人员使用 99.9% 的原因。
在某些浮动情况下,浮动的组合宽度有必要不等于 100%(如果以百分比指定),因为 IE6 会错误地将其计算为超过 100%,并且通常后面的浮动会下降。
解决方案是要么仅为 IE 指定 -1px 右边距,要么将总和设置为 99.99%。
我已经记录了该错误 这里. 。因此,无论它是否与您所看到的内容相关,希望该错误链接可以帮助遇到该问题的任何人。