GWT覆盖主题CSS

时间:2011-01-25 02:58:19

标签: css gwt popup

GWT的第一天......

我有一个PopupPanel,我想覆盖默认主题中的一些样式。 Eclipse在doc根目录中给了我一个.css,然后我把那些想要覆盖的样式放在那里。在运行时从浏览器检查显示我的样式被GWT主题覆盖。

很难相信这是新项目的默认设置 - 在库存css之后加载的应用程序.css?

我尝试在我的模块XML中加载我的css(使用stylesheet标签),但这没有任何效果,它根本没有加载。 GWT文档称这已被弃用,因此我怀疑它已被删除。无论如何,我不想使用已弃用的接口。

要清楚,这是一个订购问题。我通过检查DOM验证了我的css是否正确加载。我可以看到我的样式应用于相关元素,我可以看到它们被GWT主题css覆盖(在本例中为dark.css)。添加!important标志确实会应用我的样式,但这显然不是正确的解决方案。

弹出窗口在UI小部件中定义的锚点的单击处理程序中实例化。弹出窗口本身没有在模板中定义,我只是实例化它并调用show()。我不确定这是否相关。

有人可以向我描述如何实现这一目标吗?如果这比“在YYY文件中放行XXX”更难,我将会严重失去对GWT的信任。

感谢。

1 个答案:

答案 0 :(得分:2)

GWT只生成一些应用CSS的HTML。它看起来很复杂,但最终输出中没有任何魔法。只是HTML,CSS和一些JS。

如果您的PopupPanel采用了错误的样式,那是因为浏览器没有看到您的样式,或者标准主题(标准主题为CSS.css)中的样式优先。

如果您有DOM编辑器:

  1. 检查元素并查看它对应的样式。
  2. 验证您的样式表是否已包含
  3. 确认您的样式规则也适用于该元素。
  4. 很可能是某种简单的CSS错误,GWT是红鲱鱼。但是,如果您看不到错误,可以考虑:

    1. 为您的元素提供id或其自己的附加样式,并使用规则覆盖默认行为。
    2. 使用您想要在任何地方应用的样式完全覆盖.gwt-popupPanel
    3. 子类PopupPanel。打电话给超级 构造函数,但然后删除 gwt-popupPanel样式并替换它 用你自己的风格代替。要么 增加gwt-popupPanel并添加 你自己的额外风格。
    4. 复制整个默认主题并将其重命名为其他内容并在项目中使用该主题。
    5. 最好的选择可能是最简单的1)