【问题标题】:HTML Comments tags in internal stylesheet [duplicate]内部样式表中的 HTML 注释标签 [重复]
【发布时间】:2012-11-04 14:58:30
【问题描述】:

可能重复:
Commenting out stylesheets in HTML documents to support older browsers

我正在阅读 Wrox 发布的 Professional ASP.NET 2.0。见下面的代码。

    <head>
    <style type="text/css">

    <!--

    body {
    font-family:Verdana;
    }

    -->
    </style>
 </head>

以下内容来自书中:

之所以包含 HTML 注释标签,是因为并非所有浏览器都支持内部样式表。通常是较旧的浏览器不接受它们。将 HTML cmets 放置在样式定义周围会隐藏这些定义对非常旧的浏览器。

现在我的问题是,cmets 之间的内容怎么可能只隐藏到旧浏览器而不是新浏览器?新浏览器不受cmets影响吗?

【问题讨论】:

  • 那本书7年了,ASP.NET最高到4.5版。我今天不会认为它是一个特别有用的资源。

标签: html css stylesheet


【解决方案1】:

旧的(或者更确切地说,古老的)浏览器无法识别&lt;style&gt;,因此它被视为任何其他未知元素,其内容被视为 HTML。该评论被视为评论,因此不会呈现任何内容。

支持 &lt;style&gt; 的浏览器知道将内容视为 CSS 并忽略 HTML 注释(根据 the specification)。

【讨论】:

  • :如果评论被视为评论,那么评论之间的内容如何对浏览器可见
  • @RavindraBagale — 它们仅在任何评论可见的意义上可见。它们没有被渲染,这就是重点。
【解决方案2】:

这个想法是,这是一种内置于新浏览器支持内联样式表的技术。这只是在内部样式表中忽略 html 注释分隔符(&lt;!----&gt;)的规则,因此该方法将起作用。 (如果我没记错的话,它们只会在样式表的开头和结尾被忽略,但我对此并不完全确定。)

在较旧的浏览器中,它不知道如何处理脚本标签,因此它会将其中的所有内容直接放在页面上。但是,其中除了评论之外什么都没有,因此用户将看不到任何内容。如果您确实想在 CSS 中使用 cmets,请使用 CSS 注释样式(/**/)。

还请注意,这种方法适用于非常古老(或古老)的浏览器。这种技术现在已经不是很常见了,我敢说它也不再需要了(那么旧的浏览器可能无论如何都无法正确显示您的页面)。

【讨论】:

  • "旧的浏览器无论如何都无法正确显示您的页面。"这不一定是正确的(特别是如果页面很简单或设计时考虑到向后兼容性)。我的网站在 Netscape 1 中几乎可以正常工作。
  • @JustinC.B.在大多数情况下,几乎不值得努力确保它有效。毕竟,真的有足够疯狂的人使用 Netscape 1 访问您的页面吗?如果是这样,他们是否只为您的站点切换浏览器,因为许多其他站点在该浏览器中无法运行。我确实在句子中添加了“可能”,以表达这可能不适用于每个人。
  • 通常,该站点在 Netscape 1 中几乎无法正常工作是由于样式复杂、javascript 或表格过多。优雅简单的网站几乎在所有浏览器中都看起来不错(而在一般浏览器中看起来不太好的浏览器)。
猜你喜欢
  • 1970-01-01
  • 2017-06-23
  • 2020-10-10
  • 2019-01-19
  • 2011-08-21
  • 1970-01-01
  • 2015-12-19
  • 2010-10-01
  • 2012-12-20
相关资源
最近更新 更多