为什么 Dreamweaver 在注释中添加 CSS 代码?我们应该总是使用这个注释来在 <head> 中使用 CSS 吗?

Jit*_*yas 2 css xhtml dreamweaver

在注释中添加CSS代码有什么好处?

<STYLE type="text/css">
<!--
   H1 { color: red }
   P  { color: blue}
   -->
</STYLE>
Run Code Online (Sandbox Code Playgroud)

我们应该一直使用它还是没有必要?它与 JavaScript 的CDATA相同吗?

bob*_*nce 5

它的过时之处是为了支持 15 多年前的 HTML 2.0 浏览器。这些浏览器不知道<script><style>标签,因此除非它们中的内容隐藏在注释标记中,否则它会将它们作为文本内容吐到页面上,造成严重混乱。

\n\n

如今这种做法绝对没有任何意义,但由于剪切粘贴编码和 Dreamweaver 等糟糕的创作工具,它仍然存在。

\n\n

在用作 XML 的 XHTML 中,您不能包含注释标记,否则您的脚本或样式表实际上只是注释,将被完全忽略。

\n\n

一些作者在 XHTML 中使用<![CDATA[ ... ]]>脚本和样式表部分,但这是出于完全不同的原因。它允许您在内容中包含文字<&字符,而无需执行正确的 XML 操作并将其转义为&lt;&amp;。除了使代码更难阅读之外,脚本和样式中的 HTML 转义还会混淆传统的非 XML HTML 解析器:在 HTML4 中,脚本和样式元素很神奇,可以在不转义的情况下包含这些字符(您可以\不使用是</因为它结束了元素)。

\n\n

当您在打算由非 XML HTML 解析器读取的文档中使用 CDATA 部分时,您应该使用 CSS 或 JavaScript 注释来隐藏 CDATA 部分标记:

\n\n
<script type="text/javascript">//<![CDATA[\n    ...\n//]]></script>\n\n<style type="text/css">/* <![CDATA[ */\n    ...\n/* ]]> */</style>\n
Run Code Online (Sandbox Code Playgroud)\n\n

对于 HTML 3.2 中常见的老式注释包装,CSS 和 JS 解析有一个例外,以允许<!---->序列在不被注意的情况下溜过,但情况并非如此,<![CDATA[CSS]]>或 JavaScript 解析器会将 视为语法错误。

\n\n

如果你需要支持 HTML 2.0、3.2+XHTML 解析器(但愿不会),你最终会需要这种可怕的混乱:

\n\n
<script type="text/javascript"><!--//--><![CDATA[//><!--\n    ...\n//--><!]]></script>\n\n<style type="text/css"><!--/*--><![CDATA[/*><!--*/\n    ...\n/*]]>*/--></style>\n
Run Code Online (Sandbox Code Playgroud)\n\n

值得庆幸的是,这永远不会发生。

\n\n

您通常可以完全不用注释或 CDATA ,因为 CSS 几乎从不需要使用<or&字符,并且在 JavaScript 中您通常可以将小于比较重新转换为无害的>,并将逻辑与转换为反转逻辑或。当您想要在字符串文字中放置<or字符时(例如),CSS 和 JavaScript 都提供本机转义。&\'\\x3C\'

\n\n

在任何情况下,大量的样式和脚本\xe2\x80\x89\xe2\x80\x94\xe2\x80\x89,您最有可能想要使用这些字符\xe2\x80\x89\xe2\x80 \x94\xe2\x80\x89 通常应该位于外部链接文件中,这使得这一点毫无意义。

\n