2013-01-14 34 views
0

我有2個CSS文件爲相同的CSSResource定義2組CSS規則。我可以以某種方式應用某種範圍,以便一個CSS文件中的樣式不會覆蓋其他CSS文件中的樣式?我可以將範圍應用於GWT CSS混淆的類名

一個簡化的例子:

CSSResource

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

Style1.CSS

.box_bkg { 
background-color: red; 
} 

Style2.CSS

.box_bkg { 
background-color: yellow; 
} 

ClientBundle

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

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

當我看到生成的HTML,我看到無論是哪個BoxBundle方法它是從哪裏來的混淆類名是相同的。所以箱子全是黃色或紅色。如果混淆的名稱是相同的,我怎樣才能以不同的方式設置這些框的樣式?

由於

回答

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

+0

這工作得很好......幸運的是,我只需要2個變種 - 感謝:-) – hba