CSS中的笑脸“ :)”是什么意思?


321

我在项目中发现了以下CSS代码:

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

我已经使用CSS很长时间了,但是之前从未见过这个“ :)”代码。它是什么意思还是仅仅是错字?


17
对我来说似乎是一个错字。开发人员试图变得有趣,或者是一种让他标记他或她将要寻找的代码区域的方法?

2
@stijn可能仍然是一些奇怪的特定于供应商的代码...
标记

22
@ series0ne我认为您从未见过Internet Explorer星号黑客。
Nit 2014年

11
如果确实是浏览器黑客,则需要在CSS文件中添加注释以对此进行解释。
user247702 2014年

32
我的猜测:代码作者键入了:)以为重点是IM客户端。如果不是,他们单击IM客户端并从那里开始,却从未意识到他们在光标所坐的最后一个位置(即CSS文件)中键入了一个笑脸。
内森

Answers:


279

在javascriptkit.com上文章中,该文章适用于IE 7和更早版本:

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

还有一个针对<= IE 8的黑客:

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。在“仿真”部分(ctrl+ 8)中,将文档模式更改为,7然后查看会发生什么情况。

在此处输入图片说明

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


2
我在选择器之前知道“ _”和“ *”,但您说的不是。
valerio0999

2
@vlrprbttst为方便起见,这些是常规字符。但是,它得出所有非字母数字值。
雷沃

1
我将这个答案标记为正确,尽管salman-a也正确,但速度稍慢。我知道这种黑客攻击,但始终使用“ *”。做到这一页的人是个小丑;)。
2014年

1
我可能很愚蠢,无法在这里错过任何东西,但是为什么他可以使用2个字符来做呢?它说“添加一个非字母数字”,而不是“添加一个或多个...”。还是:其他意思?否则,我不能放*********************font-size: "150%";等吗?
马克斯

1
只是为了回答这个问题。答案是正确且正确的,但是却忽略了这不是最佳实践的事实。通常,您应该尽最大努力在用户群使用的所有浏览器中提供最佳体验。我认为,更不用说您不应该支持制造该产品的公司不再支持的浏览器。
AlienDev 2014年

171

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

的CSS

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

IE8(忽略规则)

示例1-IE8

IE7(适用规则)

示例1-IE7

请注意,它不必是笑脸。BrowserHacks提到:

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


GAH热狗摊的例子在这里


62
GAH热狗看台回闪
MikeTheLiar 2014年

是的,从IE8开始,IE都认为自己符合CSS规范,并且一点一点地破坏了所有IE特定的CSS修复程序。(因此,我们需要求助于javascript解决方案)
Flip Vernooij 2014年

39
所有站点均应为所有<IE10用户使用热狗站立主题。+1
Pete TNT 2014年

6
@ikkuh公平地说,IE11是一个相当不错且合规的浏览器。他们之所以放弃了对IE条件注释的支持,是有原因的。
2014年

2
@ apj15243是的,他们已经走了很长一段路,希望他们能继续前进。事实是,我仍然需要有条件的支持,不仅是IE11,而且还有10,9和8。因此,我们希望自动同时也进行更新,除了商业原因外,没有其他理由不在XP上运行IE11。但这是一个不同的讨论。
Flip Vernooij 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.