为什么"<! - "会注释掉一个样式规则,但"<! - "不会?

Nas*_*ser 11 html css comments

放轻松我吧.我只是在学习HTML.

收录http://www.w3.org/TR/html-markup/syntax.html#comments以及我见过的许多其他网站http://www.w3schools.com/tags/tag_comment.asp

他们说HTML评论 <!-- text -->!下一个破折号之间没有空格.

然而,我在下面说明,只有当我写的时候<! -- test --> 才会被忽略.注意在<!和之间添加的空间 --

这是HTML代码

<!DOCTYPE HTML>
<html>
    <head>
     <style type="text/css">   
<!-- td {border: 1px solid gray;} -->
    </style>
</head>
<body>

<table>
  <tr>   <td>      test   </td>  </tr>
</table>

</body>
</html>
Run Code Online (Sandbox Code Playgroud)

在你运行之前,桌子是否应该有边框?

如果text/css中的东西真的被注释掉了,那么表格不应该有边框,对吧?但确实如此.我在linux mint 14下的Chrome版本24.0.1312.52上尝试了这个,还有firefox 18.0

现在当我将线路更改为

 <! -- td {border: 1px solid gray;} -->
Run Code Online (Sandbox Code Playgroud)

现在注意额外的空间.然后表格显示没有预期的边框.当我实际删除整行时也是如此:

<!DOCTYPE HTML>
<html>
    <head>
     <style type="text/css">   
     </style>
</head>
<body>

<table>
  <tr>   <td>      test   </td>  </tr>
</table>

</body>
</html>
Run Code Online (Sandbox Code Playgroud)

问题是:是评论 <!-- text -->还是它<! -- text -->

Ila*_*ala 26

CSS不接受HTML <!-- comment here -->评论.相反,CSS用于/* comment */评论行.试试吧.

  • +1 @Ilan Biala,你钉了它.为了清楚起见,@ Nasser:HTML注释应该转义为`<! - text - >`,但是在发表评论时,你在CSS块中,所以其他规则也适用. (2认同)
  • 是的,html真正适用于构建文档,而css正在构建它.它们真的更好地分开,你应该考虑将内联样式更改为链接到html页面的外部样式表. (2认同)

Juk*_*ela 13

该字符串<! --不会注释掉任何内容.相反,在CSS中它是一个语法错误,并且CSS 错误处理规则暗示在这种情况下所有样式表都被忽略.

字符串<!--也不会启动注释,但是通过CSS 注释规则,它(以及-->)在某些上下文中被允许和忽略(跳过).因此,样式表

<!-- td {border: 1px solid gray;} -->
Run Code Online (Sandbox Code Playgroud)

被视为

{border: 1px solid gray;}
Run Code Online (Sandbox Code Playgroud)

您可以使用W3C CSS Validator进行检查.在第一种情况下,使用空格会报告错误,并且不会报告有效的CSS规则.在第二种情况下,不报告错误,并且规则显示为有效.

在CSS中,注释始终以... /*结尾*/.

其原因为特殊规则 <!---->是很久以前(我们正在谈论的Netscape 1仍然在使用的时候),一些浏览器不承认style在所有元素.这意味着他们忽略了<style></style>标记并处理它们之间的内容,就好像它是普通的HTML内容一样.这会导致样式表在这些浏览器的页面内显示.为防止这种情况,要"隐藏样式表",样式表将包装在HTML注释分隔符之间.旧浏览器然后简单地忽略style元素的内容.但是,必须在CSS规范中添加一个特殊规则以允许分隔符.

这是古老的历史,但旧的习惯占上风,甚至从其他人的代码中复制而不理解他们的意思.没有理由长时间"隐藏样式表",现在这个技巧已成为潜在风险(由于可能干扰XHTML规则或人们的混淆和打字错误).

所以,永远不要在CSS中使用<!--(或<! --).