8

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 でいくつかの定数を定義しました。

@def JUNGLEGREEN #1F3D0A;

Resources.css 内では、これらの定数を次のように使用します。

.example { color:JUNGLEGREEN; }

これらの定数を他の CSS ファイルや UiBinder テンプレートで再利用する方法を知りません。LoginView.ui.xml など、他の UiBinder ファイルでこれを行いたいと思います。

<ui:with field='resources' type='com.example.Resources' />
<ui:style>
  .mainPanel {
    background:{resources.css.JUNGLEGREEN};
    ...
  }
</ui:style>

...しかし、コンパイルされていないようです。どうすれば目的を達成できるか知っていますか?

4

3 に答える 3

4

これは私たちのやり方です:

  • すべての定数属性をconstant.cssファイルに配置します
@def black #241b15;   /* text color */
@def orange #ff4f00;   /* links */
  • 各 ui.xml ファイルで、次の方法でこれらの定数を参照できます。
<ui:style src="../../resources/css/constants.css">
    .myStyle {
        color: orange;
    }
</ui:style>

それが役立つことを願っています。

編集:

要素内の相対パスを回避するに<ui:style>は、次のようにします。

  • cssファイルで定数を再度定義します(たとえばconstants.css
@def junglegreen #1f3d0a;
  • を作成しClientBundleCssResource定義された定数を取得します
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 ファイル自体を参照せずに定数を処理する方法を知っている唯一の方法です。

于 2010-11-10T09:37:37.777 に答える
1

この答えは少し遅れているかもしれませんが、誰かを助けるかもしれません。私は同じ問題を抱えていましたが、以下を追加することで解決できました。

Resources.css().ensureInjected()

工場で追加しましたが、いくつかの場所で試してみましたが、どこに置いても機能しました.

于 2012-08-06T18:15:26.763 に答える
0

あなたは使用できるはずです

<ui:style>
  @IMPORT url("../../../global.css");
  .mainPanel {
    background:{resources.css.JUNGLEGREEN};
    ...
  }
</ui:style>
于 2010-08-20T20:26:07.133 に答える