从以下页面:
Developer’s Guide – CSS Style
很明显,在现代GWT应用程序中,有两种方式来声明css样式:
使用ClientBundle中包含的CssResource.
在UiBinder模板中使用内联元素.
你如何使用这两种方法中的任何一种来覆盖GWT默认样式,如gwt-Button,gwt-TextBox等?
我知道仍然可以使用从html页面或.gwt.xml文件引用的css样式表.但是,我想避免这种情况,因为现在不推荐使用这些方法.
解决方法
使用@external @ -rule禁用给定CSS类名称的混淆:
http://code.google.com/webtoolkit/doc/latest/DevGuideClientBundle.html#External_and_legacy_scopes
例如,您可以将以下内容放在任何CssResource样式表中:
例如,您可以将以下内容放在任何CssResource样式表中:
@external .gwt-*;
但是IMO,最好的做法是在小部件上添加addStyleName或setStyleName(或分别在UiBinder中添加addStyleNames =“…”或styleName =“…”).如果你想自定义一个主题,首先将它复制为你自己的主题并调整你自己的副本(而不是使用CSS级联覆盖样式).作为一个额外的好处,您将拥有更轻的样式表,因此为用户下载速度更快,“更快更好”.
作为旁注,UiBinder生成一个隐式ClientBundle,其中每个< ui:style> element生成一个隐式CssResource(并自动调用ensureInjected());所以< ui:style>之间没有太大区别和一个CssResource.