笑脸“:)”在CSS中意味着什么?

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

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

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

从javascriptkit.com上的一篇文章 ,这适用于IE 7和更早版本:

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

也有一个黑客<= IE 8

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

然而,这不是一个好主意,他们不validation。 您可以随时使用条件注释来定位特定版本的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进入开发者模式。 在仿真部分( ctrl + 8 )将文档模式更改为7 ,看看会发生什么。

在这里输入图像说明

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

它看起来像一个CSS攻击目标IE7和更早的浏览器。 虽然这无效的CSS和浏览器应该忽略它,但IE7和更早版本将parsing和遵守这个规则。 下面是这个黑客行动的例子:

CSS

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

IE8(忽略规则)

示例1-IE8

IE7(适用规则)

示例1-IE7

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

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


GAH热狗站的例子就在这里 。