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

Mar*_*ark 319 css css-hack

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

html, body { :)width: 640px;}
Run Code Online (Sandbox Code Playgroud)

我已经使用CSS很长一段时间了,但我之前从未见过这个":)"代码.这是什么意思还是只是一个错字?

rev*_*evo 278

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

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

还有<= IE 8的黑客攻击:

div {
  color: blue;      /* All browsers */
  color: purple\9;  /* IE8 and earlier */
 *color: pink;      /* IE7 and earlier */
}
Run Code Online (Sandbox Code Playgroud)

然而,这不是一个好主意,他们不会验证.您可以随时使用条件注释来定位特定版本的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]-->
Run Code Online (Sandbox Code Playgroud)

但是对于那些想要真正看到黑客的人,请在最新版本的IE中打开这个页面.然后通过执行a进入开发人员模式F12.在仿真部分(ctrl+ 8)中将文档模式更改为7并查看会发生什么.

在此输入图像描述

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

  • 我在选择器之前知道"_"和"*",但不是你说过的那个. (2认同)
  • @vlrprbttst这些是用于轻松的常规字符.然而,它总结了所有非字母数字值. (2认同)

Sal*_*n A 171

它看起来像是针对IE7和早期浏览器的CSS黑客攻击.虽然这无效的CSS,浏览器应该忽略它,但IE7及更早版本将解析并遵守此规则.以下是此黑客行动的一个示例:

CSS

body {
    background: url(background.png);
    :)background: url(why-you-little.png);
}
Run Code Online (Sandbox Code Playgroud)

IE8(忽略规则)

例1  -  IE8

IE7(适用规则)

例1  -  IE7

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

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


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

  • GAH热狗站立闪回 (62认同)
  • 所有网站都应该为所有<IE10用户使用热狗站主题.+1 (39认同)
  • @ikkuh公平地说,IE11是一个相当不错的兼容浏览器.他们放弃了对IE条件评论的支持是有原因的. (6认同)
  • @ apj15243是的,他们已经走了很长的路,并希望他们继续前进,事实是我仍然需要有条件的支持,这不仅是IE11,还有10,9和8.所以我们希望自动 - 更新,除了商业原因,没有理由不在XP上运行IE11.但这是一个不同的讨论. (2认同)