1

在我的子模块中,我想在运行时注入 css:

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

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

来自我使用的java Resources.INSTANCE.css().ensureInjected();,它工作得很好,除了在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,可以看到两个项目冲突,不能同时使用我的组件。谢谢。

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 回答