gpt4 book ai didi

css - 将命名空间添加到 css 应该使 IDE 验证代码?

转载 作者:数据小太阳 更新时间:2023-10-29 02:05:38 27 4
gpt4 key购买 nike

在 CSS 文件中,使用 Eclipse IDE,添加 header :

@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");

是否应该让 eclipse 检查元素是否有错误? (因为它没有这样做)。

如果没有,加不加那个header有什么区别?

最佳答案

@namespace css 中的模块用于创建仅适用于特定命名空间的样式。它对于将 CSS 样式应用到 XML 文档特别有用。您也可以将它与 xhtml 和 html5 一起使用,以便仅将样式应用于具有特定 xml 命名空间的文档和元素(由 xmlns 属性定义,通常在 html 标记中)。

例如,看看下面的 xhtml 文档:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>@namespace examples</title>

<!-- This stylesheet defines an namespace prefix called "xhtml", and uses it to style all p elements in that namespace -->
<style type="text/css">
@namespace xhtml "http://www.w3.org/1999/xhtml";
xhtml|p
{
color: Red;
}
</style>

<!-- This stylesheet defines style that apply to an imaginary "superhtml" namespace. It shouldn't work for xhtml elements -->
<style type="text/css">
@namespace "http://www.w3.org/20X6/superxhtml";
p
{
font-style: italic;
}
</style>

<!-- This stylesheet uses a namespace URL with no namespace prefix, so all its styles apply to that namespace. -->
<style type="text/css">
@namespace xhtml "http://www.w3.org/1999/xhtml";
p
{
text-decoration: underline;
}
</style>

<!-- This stylesheet uses no namespace declaration, it applies to any document that includes it. -->
<style type="text/css">
p
{
font-size: 20pt;
}
</style>

</head>
<body>

<p>If this text is red, underlined, and 20pt, then you're using the http://www.w3.org/1999/xhtml namespace.</p>

</body>
</html>

在 Firefox 4 中加载它,它看起来像这样:

注意开始的 html 标签:<html xmlns="http://www.w3.org/1999/xhtml" > .它有一个 xmlns属性。因此,与该命名空间匹配的 CSS 规则在本文档中起作用。文本为红色、带下划线和 20pt。但是请注意,文本不是斜体。为什么?应用于不同命名空间的斜体段落样式规则:

<!-- This stylesheet defines style that apply to an imaginary "superhtml" namespace. It shouldn't work for xhtml elements -->
<style type="text/css">
@namespace "http://www.w3.org/20X6/superxhtml";
p
{
font-style: italic;
}
</style>

因为 html标签没有 xmlns指向位于 http://www.w3.org/20X6/superxhtml 的虚构 namespace 的属性, 此样式规则被忽略。

现在,您可能认为更改 xmlns在 html 标记中将值设置为“http://www.w3.org/20X6/superxhtml”会使该段落变为黑色和斜体。但是,似乎所有支持 @namespace 的浏览器CSS 声明当前假定所有 xhtml/html 文档都在 http://www.w3.org/1999/xhtml 中命名空间,并相应地设置它们的样式,即使您尝试更改它也是如此。

因此,@namespace可能看起来没什么用,但如果您在多个 xml 文档之间或在 xhtml 文档和 xml 文档之间共享样式表,并且您希望每个文档具有不同的样式,它很有用。

为了演示,我将创建 3 个文件:

首先,namespacecss.css:

@namespace xhtml "http://www.w3.org/1999/xhtml";
@namespace article "http://www.example.com/namespaces/article";

xhtml|p
{
color: Red;
}

article|p
{
color: Blue;
}

p
{
font-size: 20pt;
}

接下来,namespacetest.html:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>@namespace examples</title>
<link type="text/css" href="namespacecss.css" rel="Stylesheet" />
</head>
<body>

<p>If this text is red, then you're using the http://www.w3.org/1999/xhtml namespace.</p>

</body>
</html>

最后是一个 XML 文件,namespacetest.xml:

<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="namespacecss.css"?>
<document xmlns="http://www.example.com/namespaces/article">
<p>This should be blue</p>
</document>

现在,将最后两个文件加载到 Firefox 4 中。namespacetest.html 如下所示:

http://i56.tinypic.com/2zeca44.png

namespacetest.xml 看起来像这样:

namespacecss.css中的第一个样式规则只适用于xhtml,所以xhtml段落是红色的。第二个样式规则只适用于我们的自定义命名空间“article”,因此 xml 文件中的段落是蓝色的。第三条规则适用于所有命名空间,因此两个示例中的文本都是 20pt。

进一步阅读:

感谢您提出这个问题!我在回答的过程中学到了很多东西。

关于css - 将命名空间添加到 css 应该使 IDE 验证代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5625454/

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