321

我在一个项目中发现了这个 CSS 代码:

html, body { :)width: 640px;}

我已经使用 CSS 很长时间了,但我以前从未见过这个“:)”代码。这意味着什么还是只是一个错字?

4

2 回答 2

278

来自javascriptkit.com上的一篇文章,适用于IE 7及更早版本:

如果您在属性名称前添加非字母数字字符,例如星号 ( *),则该属性将应用于 IE 而不是其他浏览器。

还有一个 <= IE 8的 hack :

div {
  color: blue;      /* All browsers */
  color: purple\9;  /* IE8 and earlier */
 *color: pink;      /* IE7 and earlier */
}

然而,这不是一个好主意,他们不验证。您总是可以随意使用条件注释来定位特定版本的IE

<!--[if lte IE 8]><link rel="stylesheet" href="ie-8.css"><![endif]-->
<!--[if lte IE 7]><link rel="stylesheet" href="ie-7.css"><![endif]-->
<!--[if lte IE 6]><link rel="stylesheet" href="ie-6.css"><![endif]-->

但是对于那些想真正看到黑客攻击的人,请在您拥有的最新版本的 IE 中打开此页面。然后通过执行F12. 在 Emulation 部分 ( ctrl+ 8) 将文档模式更改为7并查看会发生什么。

在此处输入图像描述

页面中使用的属性是:)font-size: 50px;

于 2014-08-22T10:11:55.830 回答
171

它看起来像是针对 IE7 和更早版本的浏览器的 CSS hack。虽然这无效的 CSS 并且浏览器应该忽略它,但 IE7 及更早版本将解析并遵守此规则。下面是这个 hack 的一个例子:

CSS

body {
    background: url(background.png);
    :)background: url(why-you-little.png);
}

IE8(忽略规则)

示例 1 - IE8

IE7(应用规则)

示例 1 - IE7

请注意,它不一定是笑脸;BrowserHacks提到:

这些字符的任意组合: [在属性名称适用之前] Internet Explorer ≤ 7
! $ & * ( ) = % + @ , . / ` [ ] # ~ ? : < > |


GAH 热狗摊示例在这里

于 2014-08-22T10:06:34.173 回答