我在使用背景 url 的 ClientBundle 中有一些 CSS。因为我从 /index.html
加载了 javascript (/MyModule/MyModule.nocache.js
),所以我在 CSS 中的相对 url 来自 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 提供了额外的样式信息 Sprite 与我需要的额外样式冲突。
最佳答案
你总是可以在某处添加一个静态函数:
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; }
关于css - 在 CssResource 中连接字符串以创建 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3791218/