代码之家  ›  专栏  ›  技术社区  ›  Roddy of the Frozen Peas

从GWT元素中删除内联样式属性

  •  3
  • Roddy of the Frozen Peas  · 技术社区  · 12 年前

    我继承了许多遗留的GWT代码,这些代码可以被简洁地描述为“web开发人员最可怕的噩梦”。开发人员使用了许多具有内联样式的元素,例如GWTDeckPanel。

    我想删除这些内联样式,这样我就可以应用外部样式表,但我似乎找不到任何方法。我知道可以通过以下方式设置内联样式: DOM.setStyleAttribute(container1, "height", "100%"); 或类似的,但似乎没有任何对应的 removeStyleAttribute 。有一个 DOM.removeElementAttribute 但这不适用于风格。

    有没有一种方法可以显式地从属性中删除所有内联样式? 我试着在谷歌上搜索,但最终发现的都是与UIBinder有关的东西,以及GWT开发人员的许多防御性帖子,比如“你为什么要这么做?”我不能做太多代码修改,因为这个应用程序规模巨大,而且我正处于最后期限。我们没有使用UIBinder。

    2 回复  |  直到 12 年前
        1
  •  9
  •   ᴇʟᴇvᴀтᴇ    12 年前

    设置内联CSS样式如下:

    Style style = widget.getElement().getStyle();
    style.setPosition(Position.ABSOLUTE);
    style.setTop(50, Unit.PX);
    style.setLeft(0, Unit.PX);
    // etc.
    

    要删除样式,请执行以下操作:

    style.clearPosition();
    style.clearTop();
    style.clearLeft();
    

    或者:

    DOM.setStyleAttribute(element, "height", "");
    

    删除 全部的 元素的内联样式:

    DOM.setElementProperty(element, "style", "");
    

    还可以通过附加 !important 到样式定义。例如。

    .my-gwt-widget {
        height: 150px !important;
    }
    
        2
  •  2
  •   Daniel Kurka    12 年前

    如果要清除元素的样式,可以使用以下代码:

    DOM.setElementProperty(element, "style", "");