如何在多个CssResource css文件中使用相同的@def?

Ril*_*ark 2 gwt cssresource clientbundle

我想说,在一个集中的位置,

@def mainColor = #f00;
Run Code Online (Sandbox Code Playgroud)

然后,在我的所有其他css文件中,mainColor无需重新定义它.然后,当我在一次更改mainColor时,我的整个应用程序会改变颜色.

到目前为止,我能想到的最好方法是@Source为每个CssResource声明包含两个文件,并始终包含全局def文件.还有其他方法吗?

Dan*_*ier 5

据我所知,这是你唯一的选择:

style.css文件

@def mainColor #f00;
Run Code Online (Sandbox Code Playgroud)

*.ui.xml

<ui:style src="../../../styles/style.css">
    .widget{ color: mainColor; }
</ui:style>
Run Code Online (Sandbox Code Playgroud)

这方面的缺点是相对路径.每个ui.xml都需要不同的src路径.

或者,如果你不介意使用Constants.java文件(而不是css),你可以使用 @eval

<ui:style>
  @eval mainColor com.myproject.client.Styles.INSTANCE.mainColor(); 
  .widget{ color: mainColor; }
</ui:style>    
Run Code Online (Sandbox Code Playgroud)

  • @Thomas Broyer在https://groups.google.com/forum/#!msg/google-web-toolkit/c8XdDoxDNZA/dWtkdAENYXMJ上添加了他使用此方法的内容.在uibinders之外,他提到了多种@Source技术:`@Source({"path/to/definitions.css","foo.css"})FooStyles foo;` (2认同)