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

一个简化的例子:

CSSResource

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


样式1.CSS

.box_bkg {
background-color: red;
}


样式2

.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方法。因此,这些框全是黄色或红色。如果混淆的名称相同,如何对框进行样式设置?

谢谢

最佳答案

混淆的类名是从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

08-03 16:59