14

noscript是否可以在 CSS 选择器中使用该元素?

noscript p {
    font-weight: bold;
}
4

3 回答 3

16

是的!你绝对可以做到这一点。

事实上,许多(所有?)浏览器都支持使用 CSS 定位任意标签。HTML 规范中的“官方”标签只定义了浏览器应该如何处理它们。但是 CSS 是一种针对任何 XML 风格的语言,因此您可以说foo {font-weight:bold;},并且在大多数浏览器中,它<foo> hello world </foo>会显得粗体。

正如Darko Z所阐明的,IE6/7 不会从源代码自动向 DOM 添加任意(非标准)元素;它们必须以编程方式添加。

于 2009-03-24T03:29:12.093 回答
9

我有一个 IE 错误要记住。如果像 OP 一样,您只想在 noscript 标记中设置文本样式而不是 noscript 标记本身,请忽略这一点。

假设你想让 noscript 标签的背景变成红色。在 IE8 中,它将显示启用 JS。只是盒子本身,而不是里面的文字。

所以这个组合不好:

CSS

noscript {
    background-color: red;
}

HTML

<noscript>Turn on your damned JavaScript! What is this, 1999?</noscript>

但是这种解决方法效果很好:

CSS

noscript div {
    background-color: red;
}

HTML

<noscript><div>Turn on your damned JavaScript! What is this, 1999?</div></noscript>

奇怪的是,我只在 IE8 中看到这种行为,而不是 IE7。谁知道6..

于 2010-09-24T10:39:54.767 回答
3

除了Rex M 的回答- IE 6/7 (6 def, 7 也许?) 不会为您设置任意标签的样式。但幸运的是,对于所有许多 IE 问题,有一个解决方法。

假设您想为一个名为foo. 要让 IE 将其识别为可样式化元素,您需要在 JS 中的某处包含此行:

document.createElement('foo');

您不需要附加它,只需创建它。

这将让 IE 使用 CSS 规则为您设置该元素的样式:

foo { font-weight:bold; }
于 2009-03-24T03:53:55.607 回答