0

我有 2 个 CSS 文件,为同一个 CSSResource 定义了 2 组 CSS 规则。我可以以某种方式应用某种范围,以便一个 css 文件中的样式不会覆盖另一个 css 文件中的样式吗?

一个简化的例子:

CSS资源

public interface Style extends CssResource {
String box_bkg();
}

样式1.CSS

.box_bkg {
background-color: red;
}

样式2.CSS

.box_bkg {
background-color: yellow;
}

客户端捆绑

public interface BoxBundle extends ClientBundle {
    @Source("css/Style1.css")
    MyClass.Style redBoxStyle();

    @Source("css/Style2.css")
    MyClass.Style yellowBoxStyle();
}

当我查看生成的 HTML 时,我发现混淆的类名是相同的,无论它来自哪个 BoxBundle 方法。所以盒子要么全是黄色,要么全是红色。如果混淆的名称相同,我如何设置不同的框样式?

谢谢

4

1 回答 1

1

混淆的类名是根据CssResource子接口和方法名计算出来的。如果你想要不同的类名,你必须至少创建一个子接口MyClass.Style并将其用作方法的返回类型BoxBundle;目标是这两种方法具有不同的返回类型:

public interface BoxBundle extends ClientBundle {
   @Source("css/Style1.css")
   Style1 redBoxStyle();

   @Source("css/Style2.css")
   Style2 yellowBoxStyle();

   interface Style1 extends MyClass.Style { }
   interface Style2 extends MyClass.Style { }
}

另请参阅https://code.google.com/p/google-web-toolkit/issues/detail?id=6144

于 2013-01-15T01:47:55.503 回答