在这个宽度属性值声明中,\9是什么意思?

220

这是什么意思?我猜测这是一个浏览器 hack,但我还没有找到它确切的作用。

width: 500px\9;

\9的意义是什么?


在CSS文件中,设置某个元素的宽度。 - well actually
据我所见,这似乎在任何CSS版本中都无效。 - Marc B
我认为这个问题并不涉及同一件事情。 - well actually
7
@Shivan Raptor:不,它并没有。这是一个完全不同的问题。 - BoltClock
4个回答

304

\9 是一种针对 Internet Explorer 7、8 和 9 的 "CSS Hack"。

这意味着,CSS 中仅以 \9; 结尾的那一行代码只在 IE 7、8 和 9 中有效。

在你的示例中,

width: 500px\9; 表示一个宽度为 500 像素(与 width: 500px; 相同)仅在使用 IE 7、8 和 9 时应用。

所有其他浏览器都会完全忽略 width: 500px\9;,因此不会将 width: 500px; 应用于该元素。

如果你的 CSS 看起来像这样...

#myElement {
    width: 300px;
    width: 500px\9;
}

在IE 7、8和9中,#myElement 的宽度为500像素,而在所有其他浏览器中,#myElement 的宽度为300像素。

更多信息


编辑:

本答案编写于2011年。应注意到的是,这个hack也适用于IE 10。


1
如果不破坏你的CSS,@jdavid.net绝对没有任何问题,据我所知。 - Sparky
11
\0替换为\9也会将其应用于IE10。 - abc123
21
希望他们永远不要将IE升级到16版。 - Hoffmann
4
根据我的经验,刚刚使用“\9”的时候,即使在IE 10的仿真模式下,也会应用于具有“width”属性的元素。仿真模式本来就容易出现故障,可能这就是原因。 - davidjb
1
@davidjb,那是因为它并不是真正的模拟器。它是为旧代码设计的备用方案。 - Sparky
显示剩余10条评论

13

4
谢谢提供链接,但文章没有解释它究竟是做什么的。 - well actually
1
我们使用IE的hack有两个目的。1)有些属性不被IE支持,比如display:inline-block;2)每个浏览器都会以不同的方式呈现一些HTML和CSS属性。请查看这篇文章http://blog.mozilla.com/webdev/2009/02/20/cross-browser-inline-block/。 - sandeep
IE支持display: inline-block;,但是这是一个不好的例子。 - reisio
然而,似乎对于“width”属性来说并不是特别有用的黑客技巧。至少在怪异模式之外不是这样。 - reisio
@reisio; 请仔细阅读我的评论,还有人说IE不支持display: inline-block。 - sandeep
显示剩余4条评论

2
在IE9中,要设置宽度属性,只需添加以下hack代码。
例如:
.align {
    float:left;
    margin:5px;
    background-color:blue;
    width:65px;
    width:\9 !important;
}

1

针对IE9的CSS Hack

/* Hack CSS IE9 */
.csshackie9 {color:#f00\9\0\;}

7
请提供需要翻译的原文,谢谢! - Marcin Orlowski
1
最好提供一些英文的基本信息,因为你发布的链接是俄语博客。 - Artemix
OP,你应该自我反省并去坐在调皮的位置。 - slugmandrew

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接