2

我正在阅读关于 vaadin 的第 8 章,但我无法理解如何为每个组件定义 CSS 样式。我在 styles.scss 上进行了自定义,但所有自定义都针对所有组件,我不想要这个。

例子

HorizontalLayout hLayout = new HorizontalLayout();
HorizontalLayout hMainLayout = new HorizontalLayout();

我希望 hLayout 有背景图像,而 hMainLayout 没有。

我试试这个,但不工作。

.v-horizontallayout-hLayout {
     background:url("myimage.jpg");
}

.v-horizontallayout-hMainLayout {
     background: none;
}

任何想法 ?

4

2 回答 2

5

我想为用户的“默认语言环境”答案添加一些内容:

还有一种方法称为addStyleName(String)在某些情况下更好,尤其是当您不想替换任何以前的用户定义样式时。

顺便说一句:您可以通过这样调用setStyleName(String)/来应用多个样式:addStyleName(String)

hLayout.setStyleName("aLayout bLayout cLayout"); // replaces any previous styles
hLayout.addStyleName("dLayout eLayout fLayout"); // add styles without any replacement
于 2013-12-13T07:36:03.800 回答
4

Vaadin 没有根据 java 变量名定义样式。

您可以使用Component.setStyleName将自定义样式名称应用于您的组件:

HorizontalLayout hLayout = new HorizontalLayout();
hLayout.setStyleName("hLayout");

然后你可以匹配风格v-horizontallayout-hLayout

于 2013-12-13T06:06:39.850 回答