gpt4 book ai didi

html - 您可以使用 id 和类名 css 选择器在另一个 namespace 中设置 XHTML 元素的样式吗?

转载 作者:太空狗 更新时间:2023-10-29 15:58:27 24 4
gpt4 key购买 nike

我正在开发一个使用 ubiquity-xforms 的应用程序。以前,我一直使用 XHTML 1.0 文档类型将页面作为文本/html 提供。

如果我将 mime 类型切换为 application/xhtml+xml,我会看到相当大的性能改进,因为 javascript 可以使用 get____NS() 函数,而不是它现在正在做的事情(慢慢遍历整个 DOM每次需要选择一个元素时树)。

但是当我尝试这个时,我的一堆 CSS 停止工作了。我注意到,当我在 Firebug 或 WebKit Nightly Web Inspector 中检查元素时,失败点是 XFORMS 命名空间中元素上的“.classname”和“#id”css 选择器。我还注意到,在列出的这些元素的 DOM 属性中,它们缺少“id”和“className”属性。

我的问题是,有没有办法让 UA 将它们识别为类和 ID?

我已经尝试过,但无济于事:

  1. 在内联文档类型的 ATTLIST 中将“id”属性指定为 ID
  2. 尽我所能尝试每一种文档类型,或者根本不尝试任何文档类型
  3. 限定 xhtml 命名空间中的 id 和类名属性(即 xhtml:id)

这是一些示例 xhtml。不适用于 Firefox 3.5 或 Safari 4/WebKit Nightly

<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:xhtml="http://www.w3.org/1999/xhtml"
xmlns:xf="http://www.w3.org/2002/xforms">
<head>
<style type="text/css">
/* <![CDATA[ */
#test {
background-color: red;
}
.testing {
color: blue;
}
/* ]]> */
</style>
</head>
<body>
<xf:group id="test" class="testing">Test</xf:group>
</body>

最佳答案

弗兰基,

porneL 的回答是正确的——在 XHTML 模式下,您必须使用不同的 CSS 规则,因为 @id@class 没有什么“特别”之处。

即使掌握了这些知识,您的问题还没有结束。 :)

诱惑可能是将 HTML 和 XHTML CSS 选择器放在一起,并将它们应用于同一规则:

@namespace xf url(http://www.w3.org/2002/xforms);

xf\:input.surname, xf|input[class~="surname"] {
color: green;
}

然而,另一个问题是 IE 将忽略整个规则,因为它不喜欢 XHTML 语法。遍历 Ubiquity XForms,你会看到这样的东西:

@namespace xf url(http://www.w3.org/2002/xforms);

xforms\:hint.active, xf\:hint.active {
display: inline;
}

xf|hint[class~="active"] {
display: inline;
}

如您所见,我们不得不使用不同的选择器重复样式。 (这是我们希望通过一个函数来解决的问题,该函数将抽象出样式设置任务。然后您只需编写一个规则。)

注意一些额外的事情:

  • HTML 规则使用“:”作为文字字符(因此使用“\”进行转义),并且对命名空间一无所知;
  • XHTML CSS 规则使用“~=”运算符,这意味着属性必须包含指定的值,而不是完全等于它。

关于html - 您可以使用 id 和类名 css 选择器在另一个 namespace 中设置 XHTML 元素的样式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2151615/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com