css - 在 CssResource 中连接字符串以创建 url

标签 css gwt

我在使用背景 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/

相关文章:

jquery - Fotorama透明背景

javascript - 未知高度容器中的文本元素

javascript - GWT:在页面准备好之前开始运行(或者正文资源不阻止运行 gwt)?

html - 如何将日期选择器添加到引导页面?

css - 有两个内联输入占用剩余空间

javascript - jQuery 在菜单悬停时添加透明覆盖

java - Javascript JNI 覆盖类型中 Long 的 GWT 问题

linux - Maven 构建使用/分配大量内存

java - GWT 中的动态表单

java - 如何防止 Eclipse 为某些 Java 代码行添加 'final'?