[英]Dynamic CSS class names in GWT
我正在將一個簡單的CSS網格系統移植到GWT。 我的CSS文件目前具有.size1
, .size2
等類,並且我的CSS資源看起來像-
interface MyResource extends CSSResource {
@ClassName("size1")
String size1();
@ClassName("size2")
String size2();
// And so on
}
但是,我真正想要的是具有一個類似於以下的功能-
String size(int size);
當在運行時將大小作為整數傳遞時,它將生成適當的類。 在執行一些計算以確定javascript中小部件的實際可用/所需空間,然后附加適當的類名稱時,這是必需的。
GWT甚至可以做到這一點嗎?
編輯 :為澄清起見,我可以自己編寫這樣的方法,就像這樣-
String size(int size) {
switch(size) {
case 1: return size1();
case 2: return size2();
... and so on
}
}
但是MyResource
是一個接口,其實現是在運行時由GWT生成的。 這意味着我無法將我的size
方法添加到MyResource
類型。 因此,我想我正在尋求一種向MyResource
類添加自定義方法的方法。
我認為您不應該嘗試通過css文件解決此問題,但是如果您希望樣式具有動態值,則應通過myWidget.getElement().getStyle().setSomeCssMethod()
在代碼中設置這些值。 或者在這種情況下,您似乎想要設置大小,如高度和寬度。 對於大多數窗口小部件,可以直接設置這些值。 除非我缺少某些內容,否則為什么要使用CSS類而不直接在代碼中設置它?
您不能將方法名稱傳遞給CSSResource。
請記住,CSSResource的目的是最小化和混淆CSS類名。
但是,僅因為CSS Resource 可以做到這一點,並不意味着您必須在所有代碼中都使用它。
例如,您已經知道CSS Resource方法返回一個字符串,因此只需創建自己的方法即可返回一個字符串(您的動態類名稱),並在將CSS添加到資源中時使用@ CssResource.NotStrict注釋加載CSS。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.