簡體   English   中英

GWT中的動態CSS類名稱

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM