我看到有/很多人抱怨这个问题,因为这是一个较老的问题,可能有很多人阅读它想知道它是否仍然正确,或者是否真的有一个标准。请允许我清除空气。以下是严格的 CSS 评论政策的核心原因:
#1 这不是标准的
至少从 CSS 2.1 开始标准化,注释只能包含在/*
and中*/
。虽然有些浏览器可以容忍//
,但它们不应该容忍,并且距离有人说“哦,是的,那是非标准的”或“嘿!那是非标准的,修复它!”只有一英寸;然后猜猜看,你的 CSS 代码,它可以工作,现在不能为成千上万的人工作(并且可能已经不能为数百人工作)。我将添加<!--
并-->
允许但仅(我的意思是仅)当它们出现在 HTML 文档中时,而不是在 .css 源文件中。如果您的浏览器太旧以至于无法跳过<style>
标签,那么可能是 10 年前的新浏览器的时候了。甚至猞猁和其他文本浏览器知道不阅读它们,因此将其注释掉仅在硬件和软件在当前工作状态下处于内锁状态的非常孤立的情况下有用。
#2 它不是(非常)跨平台友好的
单行注释,它开始于一行的任何地方//
,由'换行'终止,它是/不是跨平台的标准化字符。更糟糕的是,有些可能有一个换行符或 2 个字符...当这些平台混合在一起时,可能会丢失一个换行符,并且您的终止符出现了...并且您的部分或全部代码现在被注释掉了不应该是这样,您不必是天才就可以知道这可能会产生什么后果,尤其是如果您仅通过 CSS 来控制网站的功能(许多人都这样做)。
#3 标准对所有人都友好且统一
/*
和分隔符在*/
每台计算机上总是相同的字符,无论架构、操作系统等如何。
#4 换行符是空格
最后一个原因(是的,还有一个),换行符(在 CSS 和许多其他语言中)被认为是空格,*/
不是空格吗?如果你在这一点上考虑一下,应该很清楚你不应该使用空格来终止注释,特别是因为空格已经并且可以被许多 HTML/CSS 解析器剥离,或者在你甚至不知道的情况下重新格式化。
#5 CSS != C/C++
现在,如果您要从座位上飞起来冲我大喊“嘿,但是 C++...”,请记住那些编译器和 IDE 内置了大量的换行检查和检测功能,因此它们可以接受。大多数编译器除非被询问,否则不会重新格式化您的代码,并且如果无法自行猜测,许多 IDE 通常会询问您的文档正在使用哪种换行符。如果我们每次加载时都为最终用户使用 CSS 页面,想象一下它将试图绕过的噩梦。此外,C/C++ 代码在运行时不会被解析并被编译,所以很多时候,用户一开始就不会得到有问题的文档。整个世界并没有在数百个平台和许多操作系统以及一百万种不同的浏览器上不断查看源文件。评论在到达最终用户之前就被删除了。CSS 源代码直接进入用户的浏览器,并且必须非常有弹性,不知道另一边是什么,所以需要注意的是,它必须为最终用户拥有或所做的任何事情做好准备,而不是为开发人员所做或拥有的任何事情做好准备!
#6 不方便
不,需要额外输入是很烦人的*/
,但这主要归咎于不提供自动完成功能的 CSS 编辑软件的开发人员。如果您使用可以做到这一点的专业编辑器,最好是开箱即用,那么您会发现它和使用//
. 养成打字/**/
然后退格 2 的习惯,它会帮助你不要忘记,让它更容易一些。更好的是,您可以设置一个热键来为您放下这些。Windows 和 Linux 都有强大的工具来实现这一点(KDE 非常适合)。
我希望这可以帮助每个人理解“如何”背后的“为什么”,记住仅仅因为某些东西对你有用,并不意味着它就是标准,总结一下:
是的,使用它是不好的做法,对双斜线说不!
如果您需要视觉辅助来提醒您这一重要事实,只需将这张图片刻录在您的脑海中(感谢你们中那些除了制作这样的图片而无事可做的人):
PS:如果你真的想向制定/破坏 CSS 标准的人(W3C、肘部)抱怨什么,有人会开始讨论“!important”关键字的冗长和错误!但这不是这个问题的一部分,所以我不会进入它。
参考
- W3C:CSS 2.1 工作草案:注释字符。
- W3C:CSS 语法模块级别 3:解析器到字符解释的铁路图。
- Stack Overflow:各种 Stack Overflow 文章,主题几乎与这篇文章相同。
- w3schools:CSS 3 语法标准(又引用了 W3C)。
- sitepoint:关于“不使用双斜杠”的 CSS 语法注释。
- mozilla|mdn:宽松的 CSS 3 处理允许在输入文件中使用双斜杠。