我在使用后台网址的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的额外样式信息,我无法在这种情况下正常工作精灵与我需要的额外风格相冲突。
答案 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。这最近解决了我与精灵的问题。