我目前正在尝试在here描述的CssResource文件中使用条件CSS,但我对“<deferred-binding-property>
”部分有点不清楚。
这些属性必须定义在哪里?我想认为当前正在编译的模块的继承树中的任何<define-property>
标记都是可用的,但这似乎不正确。我认真无法在网上找到任何这方面的文件。
就我而言,我正在处理的项目包含两个应用程序,每个应用程序都有自己的GWT模块,但它们都继承了一个包含共享代码的“核心”模块,包括带有{{1}的ClientBundle / CssResource }语句。我想要评估的延迟绑定属性是在另一个gwt模块文件formfactor.gwt.xml中定义的。
我试图使用以下内容:
@if
所有gwt编译没有任何错误。正在正确评估模块文件本身中基于“formfactor”属性的任何延迟绑定(即,我按预期获得“移动”特定视图)。 <{1}}块中没有任何css规则被注入。
我尝试在核心gwt.xml文件和应用程序gwt.xml文件中继承formfactor.gwt.xml,并且都按照上一段中的描述进行操作。
如果我在CssResource文件中包含@if formfactor mobile{
.wrapper{
top:50px;
}
}
语句,@if
块中的代码会被注入,但如果我包含@else
(为此定义的唯一其他两个值) formfactor property),然后注入@else
块和@elif formfactor desktop tablet
块。
更新
- 虽然我仍然认为最终回答问题会很有用,但似乎我的CssResource文件在范围内确实具有formfactor属性。该问题似乎与GWT问题4697(@if
)有关,其中@ if / @ elif / @ else语句的最后一个句子总是被注入,而不管被评估的defferred-binding-property的值如何。
我的情况中的一个解决方法是简单地在普通css中设置“标准”值,然后手动更改@if块中的值,例如:
@elif
只要您不在条件内使用@def语句,只有在条件求值为true时才会注入第二条规则。
我意识到这可能不适用于所有css规则,因为它基本上为规则定义了第二个值而没有删除第一个值,但它只是一个解决方法!