为啥 /**/ 注释在样式表中起作用,而 // 注释却不起作用?
Posted
技术标签:
【中文标题】为啥 /**/ 注释在样式表中起作用,而 // 注释却不起作用?【英文标题】:Why do /**/ comments work in stylesheets but // comments don't?为什么 /**/ 注释在样式表中起作用,而 // 注释却不起作用? 【发布时间】:2011-01-29 13:51:38 【问题描述】:这样做有充分的理由吗?蹩脚的问题,但我只是想知道是否有原因。
【问题讨论】:
为什么草不是紫色的? @micheal 或者更有可能,因为他们意识到它没有那么有用,并且需要使换行符特别。考虑到 /**/ 为其余格式提供的灵活性,这两个额外的字符并不是一个很大的负担。 @Dan:因为草细胞含有叶绿素:en.wikipedia.org/wiki/Chlorophyl @Dan,绿色比紫色更适合从太阳中获取能量。 尽管有蛇和“因为它是”的答案,但这是一个合理的问题。现有的语法对于内联 cmets 来说相当繁琐,因此有理由怀疑是否有理由不使用内联注释语法。 (感谢@jball 提供了一个。) 【参考方案1】:因为specification 允许 /**/ 但不允许 // :)
不过,说真的,CSS 将换行符视为所有其他空格,并且如果没有终止分隔符,将无法确定注释的结尾。
【讨论】:
+1 用于提及理由。我从未认为 C++ 中的//
注释是“空白中立”的例外
Tagalong: //
cmets 在 C 函数之外可能会导致严重的编译器呕吐,具体取决于您的编译器。
我不确定为什么这会阻止使用'//' cmets。大多数语言都为“空白中立性”提供了一些例外,我没有看到任何重大缺点。
@Kevin 我可以同意,但后来我想到了我见过的所有情况,一个 xsl 文件最终都在一行中结束。似乎有很多工具(现在它们已经更成熟了,可能更少了)用来丢弃你的空白/返回并将所有内容都吐在一行上。
@Aaron 好点。我忘记了压缩所有网络资产的巨大运动。【参考方案2】:
css中cmets的语法是:/* comment here */
//
不是有效的语法。我想这可以让CSS在minification期间从whitespace和new line字符中正常工作。
【讨论】:
@Daniel 这似乎是@jbail 上面回答的一个很好的理由。 等一下...你可以缩小 javascript 并且它支持 // 注释方法...*划痕头*..js 缩小器删除 cmets... @leeand00 你可以用分号指定行尾。如果你的分号插入错误,它会在缩小时中断。 令人惊讶的是,CSS 缩小成为对缩小没有任何影响的设计决策的基本原理 - 出于所有目的,cmets 被视为空白,缩小过程应该删除它们(或转他们到空格)相应地。当然,有一些依赖于/**/
的 IE 修复,但是在规范前设计阶段几乎没有考虑到特定的规范后实现错误 ...【参考方案3】:
因为/* */
是 CSS 中为 cmets 定义的样式。
还有很多其他的方法可以在其他环境中编写 cmets 而在 CSS 中不起作用,例如:
//
<!-- -->
--
'
REM
;
#
【讨论】:
@Nate:只是想拓宽视野……@downvoter:如果你不解释你不喜欢什么,那完全没有意义。 +1,我认为反对票应该是拥有和解释的众多原因之一(我不关心 - 非常关心 - 如果有人对我的答案/问题投了反对票,只要他们给出解释为什么的理由)。 # cmets 在 CSS 中受支持(IE 不支持)。当我想要在 IE 中而不是在其他浏览器中时,我会使用它。 @Fr0zenFyr:我在规范中看不到关于 # for cmets 的任何内容:w3.org/TR/CSS2/syndata.html#comments 不管使用什么字符,很多语言都支持单行 cmets。【参考方案4】:因为CSS语言是这样定义的。
【讨论】:
【参考方案5】:不同的语言有不同的规范和不同的功能。在another language 中,您可能有以# 而不是// 开头的cmets。
请参阅specification。
4.1.9 条评论
评论以字符开头
/*
并以字符*/
结尾。 它们可能发生在两者之间的任何地方 令牌,其内容没有 对渲染的影响。注释 不能嵌套。CSS 也允许 SGML 注释 分隔符(
<!--
和-->
) 语法定义的某些地方, 但它们不分隔 CSS cmets。 它们是允许的,因此样式规则 出现在 HTML 源文档中 (在 STYLE 元素中)可能被隐藏 来自 HTML 3.2 之前的用户代理。见 HTML 4 规范 ([HTML4]) 用于 更多信息。
注意:没有提到以 2 个斜杠开头并在换行符处结束的 cmets。所以这就是不支持的原因。
【讨论】:
【参考方案6】:如果您想要这种风格的注释(以及其他各种本应在 CSS 规范中提供的有用功能),请尝试使用 LESS CSS。
【讨论】:
我会说使用//
作为评论的可能性并不是开始使用LESS CSS
的理由。但看起来它还有很多其他有用的功能,这些都是使用它的好理由..以上是关于为啥 /**/ 注释在样式表中起作用,而 // 注释却不起作用?的主要内容,如果未能解决你的问题,请参考以下文章
为啥jquery plusslider在google chrome中不起作用但在firefox中起作用
为啥 const 在 JavaScript 的某些 for 循环中起作用?