我是 GWT 的新手,正在通过在 Eclipse 中运行的一些示例来学习它。在其中一个按钮的程序中,我添加了setStyleName(class)
(也用 选中setStylePrimaryName()
)并使用 addStyleName(class) 添加了另一种样式。
我所期望的是该按钮应该显示使用setStyleName()
/setStylePrimaryname 设置的css 类属性,因为这将是primaryStylename。
但令我惊讶的是,如果我使用 向按钮添加另一种样式addStyleName()
,则该样式将成为按钮的样式,尽管它是其辅助样式名称!在这种情况下,为了表达主要样式名称,我必须使用添加辅助样式名称addStyleDependentName()
。
我的代码设置样式如下。
final Button sendButton=new Button("Send");
final TextBox nameField=new TextBox();
sendButton.setStylePrimaryName("newButton");
sendButton.addStyleName("secondButton");
在css文件中
.newButton{
display:block;
font-size: 16pt;
color: black;
background-color: maroon;
}
.secondButton{
color:blue;
margin: 15px 10px 10px;
background-color: olive;
}
该按钮始终以橄榄色背景颜色出现,除非将其添加为 addStyleDependentName("secondButton") 和
案例 2:在使用时addStyleName("secondButton")
然后setStyleName("newButton")
(因为setStyleName()
将删除现有的辅助样式)。我还使用getStylePrimaryName()
and检查了主要样式名称和其他样式的值getStyleName()
。
getStylePrimaryName() 给出“newButton”,getStyleName() 给出 newButton,secondButton....所以即使有一个主要样式名称,为什么它总是显示通过 addStyleName() 添加的辅助样式属性(这里是 secondButton)?
*请注意:我已经在如下文本框上尝试了这个,它按预期表达了主要样式下提到的颜色*
final TextBox nameField=new TextBox();
nameField.setText("---Enter Name Here---");
nameField.setStylePrimaryName("textStyle");
nameField.addStyleName("myText");
nameField.addStyleName("bigText");
CSS如下
.myText{
color:blue;
}
.bigText{
font-size: large;
}
.textStyle{
color:maroon;
text-shadow: aqua;
}
需要注意的一点是,除非我们不将辅助样式添加为 addStyleDependentName(),否则属性将按照 CSS 中类名出现的顺序显示...也就是说,如果主要样式名称定义在辅助样式之后,则主要得到显示,否则次要的......可以注意到改变CSS中定义类的顺序所以在我的按钮属性中,当我将顺序更改为
.secondButton{
color:blue;
margin: 15px 10px 10px;
background-color: olive;
}
.newButton{
display:block;
font-size: 16pt;
color: black;
background-color: maroon;
}
按钮颜色越来越像栗色。如果将次要样式添加为 addStyleDependentName(),则主要样式的表达与 CSS 中的顺序无关