1

私のサブモジュールでは、実行時にcssを注入したいと思います。

public interface Resources extends ClientBundle
{
    Resources INSTANCE = GWT.create( Resources.class );

    @Source( "pagedown.css" )
    @NotStrict
    CssResource css();
}

私が使用Resources.INSTANCE.css().ensureInjected();しているJavaから、pagedown.cssで画像が表示されないことを除いて、問題なく動作します。

.wmd-button>span {
    background-image: url(pagedown/wmd-buttons.png); 
    background-repeat: no-repeat; 
    background-position: 0px 0px; 
}

その理由は、画像を見つける方法がないためです。上記のコードは再利用のために私のサブプロジェクト(サブモジュール)にあります、それを機能させるために私のアプリプロジェクトに画像をコピーする必要があります、それはかなり面倒でカプセル化を破ります、これを解決する方法はありますか?

編集


上記のcssをbackground-image: url(myapp/pagedown/wmd-buttons.png);に変更した場合 ただし、このcssはサブプロジェクトにあり、アプリプロジェクトの名前がわからないため、正常に機能します。このようにハードコーディングすると、ある日、別のプロジェクトでこのコンポーネントを使用するように変更する必要があります。myOtherApp/pagedown/wmd-buttons.png、2つのプロジェクトが競合していることがわかり、私のコンポーネントを同時に使用することはできません。ありがとう。

4

2 に答える 2

0

回避策を考え出します。コンポーネントがコンストラクターでパラメーターを受け入れるようにします。パラメーターは、現在の画像URLを取得するために使用されるプロジェクトベースURLです。コンストラクターでは、GWTQueryを使用して正しい画像背景URLを添付します。

于 2013-02-07T12:06:46.640 に答える
0

このスタイル属性の構文は次のとおりです。background-image: url("pagedown/wmd-buttons.png"); したがって、コードは次のようになります。

wmd-button>span {
    background-image: url("pagedown/wmd-buttons.png"); 
    background-repeat: no-repeat; 
    background-position: 0px 0px; 
}

これではない:

.wmd-button>span {
    background-image: url(pagedown/wmd-buttons.png); 
    background-repeat: no-repeat; 
    background-position: 0px 0px; 
}
于 2013-02-07T06:07:19.537 に答える