我在项目中发现了这个CSS代码:
html, body { :)width: 640px;}
我已经使用CSS很长一段时间了,但我之前从未见过这个“:)”代码。它是什么意思还是只是一个错字?
答案 0 :(得分:274)
来自article at javascriptkit.com,适用于 IE 7 及早期版本:
如果您在属性名称前添加非字母数字字符(如星号(
*
),则该属性将应用于IE而不是其他浏览器。
还有< = IE 8 :
的黑客攻击div {
color: blue; /* All browsers */
color: purple\9; /* IE8 and earlier */
*color: pink; /* IE7 and earlier */
}
然而,这不是一个好主意,他们不会验证。您随时可以使用Conditional comments与 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中打开this page。然后通过执行 F12 进入开发人员模式。在“模拟”部分( ctrl + 8 )中,将文档模式更改为7
,看看会发生什么。
页面中使用的属性为:)font-size: 50px;
。
答案 1 :(得分:169)
它看起来像是针对IE7和早期浏览器的CSS黑客攻击。虽然 无效的CSS和浏览器应忽略它,但IE7及更早版本将解析并遵守此规则。以下是这个黑客行动的一个例子:
<强> CSS 强>
body {
background: url(background.png);
:)background: url(why-you-little.png);
}
IE8(忽略规则)
IE7(适用规则)
请注意,它不一定是笑脸; BrowserHacks提及:
这些字符的任何组合:
的! $ & * ( ) = % + @ , . / ` [ ] # ~ ? : < > |
强>
[在属性名称可用之前] InternetExplorer≤7