如何在现代GWT应用程序中覆盖默认CSS?

时间:2011-11-18 13:10:09

标签: css gwt cssresource clientbundle

从以下页面:Developer's Guide - CSS Style

很明显,在现代GWT个应用中,有两种方式可以声明css个样式:

使用ClientBundle中包含的CssResource。 在UiBinder模板中使用内联元素。

如何使用这两种方法中的任何一种来覆盖GWT默认样式,例如gwt-Buttongwt-TextBox等?

我知道仍然可以使用从html页面或.gwt.xml文件引用的css样式表。但是,我想避免这种情况,因为现在不推荐使用这些方法。

1 个答案:

答案 0 :(得分:10)

使用@external @ -rule禁用给定CSS类名称的模糊处理:http://code.google.com/webtoolkit/doc/latest/DevGuideClientBundle.html#External_and_legacy_scopes 例如,您可以在任何CssResource样式表中添加以下内容:

@external .gwt-*;

但是,IMO,最佳做法在小部件上改为addStyleNamesetStyleName(或分别在UiBinder addStyleNames="…"styleName="…")。如果你想自定义一个主题,首先将它复制为你自己的主题并调整你自己的副本(而不是使用CSS cascade 覆盖样式)。作为额外的好处,您将拥有更轻的样式表,因此为用户下载速度更快,“速度更快”

作为旁注,UiBinder会生成一个隐式ClientBundle,其中每个<ui:style>元素生成一个隐式CssResource(并自动调用ensureInjected());所以<ui:style>CssResource之间没有太大区别。