双向正斜杠直接IE使用特定的CSS吗?

imk*_*dal 4 css browser compatibility internet-explorer comments

我在开发网站时发现了一些非常奇怪的东西.在尝试将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;
}
Run Code Online (Sandbox Code Playgroud)

所以基本上,似乎//可以用来指示较新的浏览器忽略特定的代码行,并指示旧版本的IE使用它?如果这是常见的做法,请告诉我.它肯定会使旧版浏览器的开发变得更加容易

thi*_*dot 7

//不是有效的CSS评论.

正确解析CSS的浏览器将忽略,//position因为//position它不是有效的属性名称(详细信息在这里,property- > IDENT S*- > 跟进它).

这仅适用于IE7,因为它众所周知的错误是接受前面带有垃圾的属性.

这不仅仅是//有效的.IE7将在此处显示红色文字:

body {
    !/!*//color: red;
}
Run Code Online (Sandbox Code Playgroud)

这通常被利用*,例如*display: inline;作为display: inline-blockIE7变通方法的一部分.

  • 我发现在调试它时在我的 css 周围添加 /* .. \*/ 很麻烦,所以我提供了以下俗气的 hack 以跨浏览器的方式禁用 css 行: .myRule{..} become . XXmyRule{..}!当然它添加了一个额外的未使用规则,而不是删除它,但肯定比 /* .. */ 快得多 (2认同)