我想在GWT CssResource中将一些颜色定义为常量,并在整个应用程序中使用这些常量;但我不知道该怎么做。
我会告诉你我尝试了什么。我创建了一个ClientBundle和一个CssResource,如下所示:
public interface Resources extends ClientBundle {
public interface MyStyle extends CssResource {
String JUNGLEGREEN();
String example();
...
}
@Source("Resources.css")
MyStyle css();
}
我在Resources.css中定义了一些constants:
@def JUNGLEGREEN #1F3D0A;
在Resources.css中,我使用这些常量:
.example { color:JUNGLEGREEN; }
我不知道在其他CSS文件和UiBinder模板中重用这些常量的方法。我想在其他一些UiBinder文件中执行此操作,比如LoginView.ui.xml:
<ui:with field='resources' type='com.example.Resources' />
<ui:style>
.mainPanel {
background:{resources.css.JUNGLEGREEN};
...
}
</ui:style>
...但似乎没有编译。你知道我如何实现我的目标吗?
答案 0 :(得分:4)
我们就是这样做的:
constant.css
文件@def black #241b15; /* text color */
@def orange #ff4f00; /* links */
<ui:style src="../../resources/css/constants.css">
.myStyle {
color: orange;
}
</ui:style>
希望有所帮助。
编辑:
要避免<ui:style>
元素中的相对路径,您可以执行以下操作:
constants.css
)@def junglegreen #1f3d0a;
ClientBundle
和CssResource
以检索已定义的常量public interface MyResources extends ClientBundle {
public static final MyResources INSTANCE = GWT.create(MyResources.class);
public interface Constants extends CssResource {
String junglegreen();
}
Constants constants();
}
- 使用@eval
注释来访问常量
<ui:style>
@eval green com.gwt.client.widget.test.MyResources.INSTANCE.constants().junglegreen();
.someClass {
color: green;
}
</ui:style>
我知道如何在不引用css文件本身的情况下处理常量的唯一方法。
答案 1 :(得分:1)
我知道这个答案可能有点迟,但可以帮助别人。我遇到了同样的问题,并且能够通过添加以下内容来解决它:
Resources.css()。ensureInjected()
我在工厂添加了它,但在几个地方尝试过,无论我把它放在哪里,它都有效。
答案 2 :(得分:0)
你应该可以使用
<ui:style>
@IMPORT url("../../../global.css");
.mainPanel {
background:{resources.css.JUNGLEGREEN};
...
}
</ui:style>