在CSS属性中访问GWT ImageResource?

时间:2012-06-26 14:43:33

标签: css gwt

了解创建ImageResource的Google / GWT示例:

interface MyResources extends ClientBundle {
  @Source("image.png")
  ImageResource image();

  @Source("my.css");
  CssResource css();
}

@sprite .myImage {
  gwt-image: 'image';
}

我知道如何使用ImageResources并应用样式名称,但是..

在我的应用程序中,我有多个主题,使用css和延迟绑定应用于各种小部件。所以我已经定义了一个css规则('background'),我想使用.myImage类,但它没有做任何事情:

background {
    background-attachment: fixed;
    background-image: .myImage;  //??  This is the question!
    background-size: contain
}

在'background'css属性中使用.myImage类的语法是什么?看来我应该能够将.myImage类指定为background-image的参数。

编辑:进行了一些研究并找到了使用DataResource执行此操作的正确语法。

MyClientBundle extends ClientBundle {

    //Background Image
    @Source("resources/background.png")
    DataResource backgroundImage();

}

(mypanel.css)

@url background backgroundImage;

.myPanel {
    border-radius: 0px;
    background-color:#ffffff;
    opacity:0.6;
    background-image: background;
}

4 个答案:

答案 0 :(得分:0)

如果您将“myImage”作为样式名称添加到任何窗口小部件,它将设置这些窗口小部件的背景...

答案 1 :(得分:0)

在'background'css属性

中使用.myImage类的语法
MyClientBundle extends ClientBundle {

        //Background Image
        @Source("resources/background.png")
        DataResource backgroundImage();
    }

(mypanel.css)

@url background backgroundImage;

.myPanel {
    border-radius: 0px;
    background-color:#ffffff;
    opacity:0.6;
    background-image: background;
}

答案 2 :(得分:0)

我认为正确的方法是在CSS类本身中定义@ImageOptions,其余的都定义。

对我来说,以下代码

Theme.java

public interface Theme extends ClientBundle {

  @ImageOptions(repeatStyle = RepeatStyle.None, preventInlining = true)
  @Source("path/logo.png")
  ImageResource logo();

  @Source("theme.css")
  ThemeCss css();

  interface ThemeCss extends CssResource {
      String logo();
  }

}

theme.css

@sprite .logo {
  gwt-image: "logo";
  background-size: contain;
  background-attachment: fixed;
}

产生以下输出:

.GLOMG3GI {
  height: 344px;
  width: 633px;
  overflow: hidden;
  background:url(data:image/png;base64,iV...=) -0px -0px no-repeat;
  background-size: contain;
  background-attachment: fixed;
}

您可以在gwt-image属性之后或使用ImageOptions覆盖所需的任何CSS属性。

答案 3 :(得分:-1)

您可以使用此myResources.css.myImage之类的样式。我的意思是你想在UiBinder中使用这个样式,你可以使用styleName属性来使用它。

在您申请班级.myPanel的任何地方,您都可以应用styleName='myResources.css.myImage'来应用背景图片。

如果你想在java中使用它(即没有UiBinder), 你可以像这样使用

MyResources myResources = GWT.create(MyResources.class);
widget.setStyleName("myResources.css.myImage");

此处widget是Widget的对象,您要将背景应用到该对象。

我建议您查看此Explanation,以便清楚了解。