3

我继承了很多遗留的 GWT 代码,可以简洁地描述为“Web 开发人员最糟糕的噩梦”。开发人员使用了许多具有内联样式的元素——例如,GWT DeckPanel。

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

有没有办法从属性中显式删除所有内联样式?我尝试了谷歌搜索,但我最终发现的只是与 UIBinder 相关的内容以及来自 GWT 开发人员的大量防御性帖子,例如“你为什么要这样做?” 而且我不能做太多的代码修改,因为这个应用程序很大,而且我在截止日期前。我们没有使用 UIBinder。

4

2 回答 2

9

像这样设置内联 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;
}
于 2012-07-23T20:05:40.717 回答
2

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

DOM.setElementProperty(element, "style", "");
于 2012-07-23T22:06:57.270 回答