由于我的应用程序变得更大,我决定我的应用程序的每个“模块”都有自己的资源文件、样式文件和GSS文件。另外,例如按钮的样式将在一个不同的全局GSS文件中,因为它更像是一种应用程序样式,通过应用程序使用。
这不是问题,但当我想做这样的事情时:
.buttonGroup>.button.active{ background-color: red}在其中一个模块中,它与任何内容都不匹配。
由于按钮样式(buttonGroup、按钮、活动)和行为(在单击中添加"active“类)是在不同的(全局) GSS文件中指定的,所以我无法更改"active”类的样式。
下面是一个简化的示例:
public interface AppResources extends ClientBundle {
public static AppResources INSTANCE = GWT.create(AppResources.class);
@Source({"style.gss"})
AppStyle appStyle();
}样式文件:
public interface AppStyle extends CssResource {
String buttonGroup();
String button();
String active();
}模块:
public interface ModuleResources extends AppResources{
public static ModuleResources INSTANCE = GWT.create(ModuleResources.class);
@Source({"style.gss","module.gss"})
ModuleStyle moduleStyle();
}样式文件:
public interface ModuleStyle extends AppStyle {
}在GSS文件中,我尝试使用@provide和@require (如果没有它,它就不会编译,因为它缺少标识符或类)。
然后,它编译得很好,但是buttonGroup、按钮甚至是active类都被视为属于AppStyle的类,因此使用了style.gss样式和规则:
.buttonGroup>.button.active{ background-color: red}在.hash-ModuleStyle-buttonGroup,.hash-ModuleStyle-button中,任何东西都不匹配,因为它可能在寻找.hash-AppStyle-buttonGroup和.hash-ModuleStyle-active类,而按钮上的实际样式是.hash-AppStyle-buttonGroup等。
发布于 2017-11-14 09:58:53
最后,我在我想要在不同GSS样式表中使用的类上使用@external来解决这个问题。
通过使用@external,小部件中的所有类(它们都有自己的样式表)使它们的类名保持不混淆,以便它们可以在任何模块样式表中被覆盖。
我以前不想这么做,但这是我唯一能想到的解决办法。
发布于 2017-11-14 19:40:12
这正是@Import所要解决的问题!
https://stackoverflow.com/questions/46182425
复制相似问题