不应用使用默认GWT CSS类名的UiBinder内联样式

时间:2012-05-27 12:22:57

标签: css gwt uibinder

我在UiBinder上使用GWT,但我无法设法让默认的CSS样式规则正常工作。到目前为止,我已经成功地通过分配自定义CSS类名来设置我的组件样式,如下所示:

<ui:style>
    .createButton {
        background-color: red;
    }
</ui:style>

<g:FlowPanel>
   <g:Button styleName="{style.createButton}">Create</g:Button>
</g:FlowPanel>

但是当使用GWT的默认CSS类名时,如下例所示,该样式根本不应用:

<ui:style>
    .gwt-Button {
        background-color: red;
    }
</ui:style>

<g:FlowPanel>
   <g:Button>Create</g:Button>
</g:FlowPanel>

我认为它可能与GWT处理UiBinder类名的方式有关。在将UiBinder样式名设置为{style.createButton}后,当我使用Firebug检查Web应用程序中的按钮时,它使用某种混淆的类名:

class="GBMSFK0DJJ"

当我在没有指定任何类名后检查它时,它说:

class="gwt-Button"

虽然按钮似乎具有正确的类名,但是我没有应用我在UiBinder样式部分中定义的样式。我错过了什么或这是一个错误吗?

(如果你想知道为什么我不只是将自己的自定义样式名称分配给按钮:我实际上是尝试使用.gwt-TreeItem设置TreeItems的样式,但是按钮类可能是一个更好的例子。)

1 个答案:

答案 0 :(得分:10)

.gwt-Button中的

ui:style将被混淆,因此不会应用于class="gwt-Button"

您必须将其标记为@external,因为它不会被混淆:

@external .gwt-Button;

.gwt-Button { background-color: red; }