3

私は、「Web開発者にとって最悪の悪夢」と簡潔に説明できる多くのレガシーGWTコードを継承しました。開発者は、インラインスタイルを持つ多くの要素を利用しています。たとえば、GWTDeckPanelなどです。

これらのインラインスタイルを削除して、外部スタイルシートを適用できるようにしたいのですが、これを行う方法が見つからないようです。インラインスタイルはこれを介して設定できることを知っています: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 に答える