13

以下 html 文档(连同 CSS)无法在b.css.

<!doctype html>
<html>
    <head>
        <link rel="stylesheet" media="screen" type="text/css" title="A" href="a.css" />
        <link rel="stylesheet" media="screen" type="text/css" title="B" href="b.css" />
    </head>
    <body>
        <div id="A">A</div>
        <div id="B">B</div>
    </body>
</html>

/* a.css */
div#A   { color: blue;  }
/* b.css */
div#B   { color: red;   }

使标题相同(例如,两者都<link ... title="A">修复了它,但我看不出原因,为什么应该这样做。标题在做什么,在这里,这会导致错误吗?

4

4 回答 4

34

HTML 4.0 规范指出存在三种样式表:持久、首选和备用。

  • rel="stylesheet"如果样式表被链接并且没有title属性,那么它是“持久的” 。渲染时使用所有持久样式表。
  • 如果样式表与属性链接rel="stylesheet"并具有title属性,则该样式表是“首选”;具有相同的首选样式表title被分组在一起,但不应超过一组。似乎浏览器只会选择一个首选样式表来呈现,因为应该只有一个。
  • 最后,如果样式表rel="alternate stylesheet"title. 这些样式表应该允许用户选择样式表,它们被组合在一起title并显示在浏览器的样式表选择器中,如果它有一个(在 Firefox 中查看 >> 页面样式)。每个组(按标题)是互斥的。

通过将title属性放在样式表中,您会在不知不觉中将它们变成首选样式表,而不是预期的持久样式表。这也是为什么当他们都拥有相同的头衔时他们工作的原因。

于 2009-12-24T22:46:39.500 回答
1

跟进尼尔威廉姆斯的回答:

作者可以指定许多相互排斥的样式表,称为备用样式表……用户代理应该允许用户从备用样式表中进行选择。

(重点补充)

还:

要使样式表成为首选,请将 rel 属性设置为“stylesheet”,并使用 title 属性命名样式表。

这是来自http://www.w3.org/TR/REC-html40/present/styles.html#h-14.3.1

于 2009-12-24T22:54:26.077 回答
0

阅读:http: //blogs.telerik.com/dimodimov/posts/08-05-15/title_attributes_in_css_link_tags_prevent_styles_from_being_applied.aspx

一段时间以来,我已经意识到 CSS 标签中的标题属性会触发问题并阻止某些 CSS 样式应用于网页。今天我花了几个小时来找出实际发生的事情,这就是我们所拥有的。

如果页面中有多个标签,其中一个有标题属性,那么后面的标签必须具有相同值的标题属性或根本没有标题属性,否则后面的 CSS 文件中的样式将不适用于页面。

这个问题很容易在 Firefox、Opera 和 Safari 的各种版本中重现。唯一没有出现意外行为的浏览器是 Internet Explorer。

真的很奇怪oo

于 2009-12-24T22:50:52.037 回答
-2

我花了大约 3 个小时才完成它,因为我正在添加一个新的样式表包含。我认为当前的 CSS 规则和我添加的规则之间存在一些冲突。在用完理智的选项后,我尝试从链接中删除标题标签。我没有多想,认为这是一些无用的元数据。好吧,事实证明这是阻止解析 CSS 的原因。事实证明,brainfart CSS 标准的陈旧委员会提出了这个问题。难道他们不能只添加一个更清晰的新属性,用于他们喜欢的功能(无论它应该做什么),而不是依赖于 title 属性的存在或不存在吗?我失去了所有应该投入到做一些富有成效的事情上的时间。在我的搜索过程中,我向自己保证,一旦找到问题的根源,我会采取措施。现在,还有待决定措施。

于 2010-06-24T19:36:40.800 回答