双正斜杠是不是指示 IE 使用特定的 css?

Posted

技术标签:

【中文标题】双正斜杠是不是指示 IE 使用特定的 css?【英文标题】:Do double forward slashes direct IE to use specific css?双正斜杠是否指示 IE 使用特定的 css? 【发布时间】:2012-06-28 10:45:29 【问题描述】:

我刚刚在开发网站时发现了一些非常奇怪的东西。在尝试让 div 元素显示在屏幕顶部时,我注意到除了旧版本的 IE 之外,我在任何浏览器中都没有达到预期的效果。为了测试一些不同的代码,我没有删除错误的行,而是使用“//”将其注释掉(我什至不确定这是否适用于 css)但发生的事情是,兼容的浏览器使用了未注释的代码,而IE使用'//'标记的代码。这是代码:

#ban-menu-div
position:fixed;top:0;
//position:relative; //<-- IE keeps the banner with rel pos while the other
display:block;       //    browsers used fixed
margin:auto;
padding:0px;
width:100%;
text-align:center;
background:black;

所以基本上,似乎 // 可以用来指示较新的浏览器忽略特定的代码行,并指示旧版本的 IE 使用它?如果这是常见的做法,请让我知道。它确实让旧浏览器的开发变得容易得多

【问题讨论】:

【参考方案1】:

// 不是valid CSS comment。

正确解析 CSS 的浏览器将忽略 //position,因为 //position 不是有效的属性名称(详细信息为 here、property -> IDENT S* -> follow it through)。

这仅在 IE7 中有效,因为它众所周知的错误是接受带有垃圾的属性。

不仅仅是// 有效。 IE7这里会有红色文字:

body 
    !/!*//color: red;

这通常与* 一起被利用,例如*display: inline; 作为display: inline-block workaround for IE7 的一部分。

【讨论】:

(我假设“旧版本的 IE”是指 IE7) 我发现在我的 css 周围添加 /* .. */ 很麻烦,因为我正在调试它,所以我提供了以下俗气的 hack 来以跨浏览器的方式禁用 css 行:. myRule.. 变为 .XXmyRule..!当然它添加了一个额外的未使用规则,而不是删除它,但肯定比 /* .. */ 快很多 我一直在使用同样的技巧——在 CSS 以外的地方——例如。检查变量是否在任何地方使用 - 将 var FileLineIndex : integer ; 更改为 var xFileLineIndex : integer ;【参考方案2】:

不要陷入注释掉单行或块而不使用正确的 /* */ 对的诱惑。有权访问网站文件夹的客户自己选择使用以下代码注释掉一行:

//*  comment here   *//

实际上,Chrome 和 Safari 会忽略此行之后的任何内容。我称之为“css杀手”。 :D

【讨论】:

我不知道会怎样。它会看到// 并在EOL 之前忽略所有内容,或者它会看到/,然后将/* comment here */ 视为“零长度空间”,然后再看到另一个/。无效的 CSS,当然,但为什么解析器会吞下所有东西直到 EOF?

以上是关于双正斜杠是不是指示 IE 使用特定的 css?的主要内容,如果未能解决你的问题,请参考以下文章

使用 mvn release:prepare,是不是可以指示 Maven 在提交命令的子模块 pom 位置中使用正斜杠?

是否有针对 IE10 的特定 CSS 选择器?

[C ++尝试使用Ifstream打开.txt文件的问题

CSS 使用IE的特定样式

如何使用正斜杠在 CSS 中进行注释

如何仅为特定的 IE 浏览器设置 CSS?