4

jspページに垂直に積み上げられた情報を表示するためにGWTポップアップパネルを使用しています。私が直面している問題は、ポップアップパネルが表示されると、設定された位置を保持しないことです。setPopupPosition() を使用してポップアップ パネルの位置を設定しています。ただし、ユーザーがブラウザーをスクロールするたびに、表示されるポップアップ パネルはそれに応じて上下に移動します。表示されていた元の位置を維持していません。

css プロパティを (position: fixed;) に設定して、ポップアップ パネルに適用しようとしましたが、機能しません。HTML 要素を静的に表示するには、 position: fixed と width: 100% を使用してそれを実現できることをどこかで読みました。しかし、私の場合、ポップアップ パネルを特定のサイズで表示する必要があるため、幅を 100% に設定することはできません。

GWT でポップアップ パネルの位置を固定する方法はありますか? 位置を修正するためにブラウザのスクロールバーイベントをリッスンする必要がありますか、それとも別の方法で処理できますか?

これは私のコードで、GWT でポップアップ パネルの位置を設定するために使用します。

           final PopupPanel simplePopup = new PopupPanel(false);
           _beamMenu = simplePopup;
           rendererDisplay(response, simplePopup,true);
           int left =_beamIcon.getAbsoluteLeft() + _beamIcon.getOffsetWidth() - simplePopup.getOffsetWidth();
           int top = _beamIcon.getAbsoluteTop() - simplePopup.getOffsetHeight();
           simplePopup.setPopupPosition(left, top);

この点でどんな助けも高く評価されます。

どうもありがとう、アシーシュ

4

2 に答える 2

4

次のCSSを追加します。position: fixed !important;

于 2012-12-11T00:04:08.127 に答える
2

PopupPanel のデフォルトの動作で十分です。あなたは実際に欲しいのですがposition: absolute、そうではありませんfixed。(位置タイプの説明については、http://www.quirksmode.org/css/position.htmlを参照してください。ただし、スクロールすると浮いfixedているように見えます)。

おそらく発生している問題は、PopupPanel を表示すると、DOM 内のどこからでも削除され、RootPanel に追加されることです。

(これは GWT 2.4 のものなので、正確なコードは異なる場合があります)

public void show() {
    if (showing) {
        return;
    } else if (isAttached()) {
        // The popup is attached directly to another panel, so we need to remove
        // it from its parent before showing it. This is a weird use case, but
        // since PopupPanel is a Widget, its legal.
        this.removeFromParent();
    }
    resizeAnimation.setState(true, false);
}

...

public void setState(boolean showing, boolean isUnloading) {
    ...
    RootPanel.get().add(curPanel);
    ...
}

その結果、position: absolute十分なはずですが、他のトップ レベルのウィジェットも完全に配置される可能性があります。したがって、ページをスクロールすると、実際には他のウィジェットのいずれかのコンテンツをスクロールしている可能性が高く、PopupPanel は大きなオフセット高さを持たず、スクロールされていない外側の要素に固執します。これが、配置を使用している場合と同じ動作をしているように見える理由ですfixed(つまり、常にブラウザー ウィンドウの上部と側面から XX ピクセル)。

戻ってページの構造を確認し、他のウィジェットを修正すれば問題ありません。私の観察によると、新しい LayoutPanels はいたるところposition: absoluteで使用されるため、手動で に設定する必要がある場合がありますrelative

于 2011-12-24T02:41:56.757 に答える