【问题标题】:What namespace should be defined in Firefox's userContent.css?Firefox 的 userContent.css 中应该定义什么命名空间?
【发布时间】:2017-06-28 16:27:19
【问题描述】:

在 Firefox 的 userChrome.css 中,需要定义 XUL 命名空间:

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

在 userContent.css 中,如果除了网站自定义之外还包含 about:addons 自定义,应该定义什么命名空间?

仅指定:

@namespace url(http://www.w3.org/1999/xhtml);

导致未应用 about:addons 自定义。

(请参阅 Why are CSS declarations for about:addons placed in userContent and not userChrome, given that the namespace is XUL? 了解为什么将 about:addons 自定义设置放在 userContent.css 中。)

【问题讨论】:

  • @Makyen 对您对此的想法非常感兴趣。
  • 很抱歉从未见过这个。不幸的是,@username 通知仅在用户已经以特定方式与帖子进行交互时才起作用(例如,是所有者、已成功编辑、评论,或者是作为副本关闭问题的金牌持有者)。因此,我从未收到您对我的评论的通知。我不是故意不理你。
  • @Makyen 感谢您提供的信息……我的感受没有受到伤害。 :) 如果您有任何想法,我仍然感兴趣。

标签: css user-interface firefox namespaces customization


【解决方案1】:

userContent.css 文件用于可以属于任何命名空间的内容。最常用于 HTML 和 XUL。此外,Firefox 正在过渡到在用于定义其 chrome 的代码中使用更多的 HTML 命名空间元素(即所有非内容)。因此,您需要同时处理 userChrome.cssuserContent.css 中的 HTML 和 XUL。

鉴于 Firefox Chrome 中使用的 HTML 和 XUL 的混合,我发现我经常需要查看元素的源代码或使用 DOM Inspector 来查看哪个命名空间用于我的元素我感兴趣。

使用@namespace 指令有很多方法可以做到这一点。如果需要,可以在同一个文件中使用以下两种方法。如果这样做,则需要注意您定义为当前默认命名空间的内容。

为 HTML 元素定义规则,将默认值更改为 XUL 然后执行 XUL

鉴于这些文件默认使用 HTML 命名空间,我个人所做的只是在使用之前有我的 HTML 命名空间规则:

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

将默认命名空间设置为 XUL。然后,我的所有 XUL 规则都放在命名空间更改之后。因此,它看起来像:

/* Put all HTML namespace rules here. */    

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

/* Put all XUL namespace rules here. */    

如何组织它取决于您。我这样做是因为在将默认命名空间更改为 XUL 后尝试显式使用 HTML 命名空间作为元素时遇到问题。我发现显式指定每个元素的命名空间通常不会像我预期的那样发挥作用,而且在后面很痛苦。因此,我将我使用的所有规则重新构建为 HTML 或 XUL。

或者,定义命名空间前缀,然后在所有元素上使用它们

如果您想通过显式指定每个元素的命名空间来做到这一点,您将需要定义一个命名空间前缀。您可以通过以下方式来做到这一点:

/* set html namespace to http://www.w3.org/1999/xhtml */
@namespace html url("http://www.w3.org/1999/xhtml");
/* set xul namespace to http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul */
@namespace xul url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");

然后您可以使用html|xul|*| 为每个元素指定 HTML、XUL 或所有命名空间。

注意:更改默认命名空间后,您可能需要显式处理其他命名空间中的元素(例如<svg><math> 等),这些元素通常会自动处理。

【讨论】:

    猜你喜欢
    • 2010-10-24
    • 2015-09-24
    • 2018-11-17
    • 1970-01-01
    • 1970-01-01
    • 2011-04-13
    • 1970-01-01
    • 2014-10-18
    • 1970-01-01
    相关资源
    最近更新 更多