CssResource中的Concat字符串创建一个url

时间:2010-09-24 21:41:51

标签: css gwt

我在使用后台网址的ClientBundle中有一些CSS。由于我从/MyModule/MyModule.nocache.js加载了javascript(/index.html),因此CSS中的相对网址来自root。这意味着

.myBackground { background: url("images/background.png"); }

将尝试从/images/background.png加载。这似乎是runtime css substitution的完美案例。我将以下行添加到我的css文件的顶部:

@eval moduleName com.google.gwt.core.client.GWT.getModuleName();

我现在如何将moduleName变量与字符串"images/background.png"合并?

我正在寻找类似的东西:

@eval moduleName com.google.gwt.core.client.GWT.getModuleName();
.myBackground { background: url(moduleName + "images/background.png"); }

不幸的是,这种方法在编译期间导致输出中的一些错误:

Line 46 column 30: encountered " ". Was expecting one of: <NUMBER> <PERCENTAGE>
<PT> <MM> <CM> <PC> <IN> <PX> <EMS> <EXS> <DEG> <RAD> <GRAD> <MS> <SECOND> <HZ>
<KHZ> <DIMEN> <FUNCTION>

注意:我知道,有CSS Sprites,我在某些地方使用它,但由于GWT围绕CSS的额外样式信息,我无法在这种情况下正常工作精灵与我需要的额外风格相冲突。

2 个答案:

答案 0 :(得分:1)

您总是可以在某处添加静态功能:

public static String getBackgroundUrl(){
     return com.google.gwt.core.client.GWT.getModuleName() + "/images/background.png";
}

在你的CSS中

@eval BG_URL com.yourclass.getBackgroundUrl();

.myBackground { background-url:BG_URL; }

答案 1 :(得分:0)

我会将此添加为评论,但我没有足够的声誉......

我不太确定你的意思是“GWT关于CSS精灵的额外样式信息与我需要的额外样式内容相冲突”,但是如果你指的是你需要指定的其他背景属性,你试过分裂吗?背景到它的组成部分?例如,背景图像,背景位置,etc。这最近解决了我与精灵的问题。