2

このように定義されたドラッグ可能な YUI パネルがあります

new YAHOO.widget.Panel("parameters", {
                        fixedcenter: true,
                        constraintoviewport: true,
                        underlay: "shadow",
                        visible: false,
                        close: true,
                        draggable: true,
                        width: "350px" });

パネルが表示されているときは、ウィンドウがスクロールされても常に表示されたままにしておきたいです。おかげで、これも事実fixedcenter: trueです。問題は、ウィンドウをスクロールすると、以前に別の場所にドラッグした場合でも、パネルがウィンドウの中央に配置されることです。

ウィンドウがスクロールされたときにパネルの位置がウィンドウに対して一定に保たれるようにするには、上記の定義をどのように変更すればよいですか?

4

2 に答える 2

4

パネル コンテナを、位置が固定されたラッパー要素でラップします。

<div id="wrapper" style="position: fixed">
    <div id="parameters">
        <div class="hd">Header</div>
        <div class="bd">Hello, this is my awesome panel.</div>
        <div class="ft">Footer</div>
    </div>
</div>

構成プロパティなしでパネルを構築fixedcenterし、レンダリング直後にパネルを中央に配置します。

var panel = new YAHOO.widget.Panel("parameters", {
        constraintoviewport: true,
        underlay: "shadow",
        visible: false,
        close: true,
        draggable: true,
        width: "350px"
    });
panel.render();
panel.center();

ウィンドウがスクロールされたとき、パネルは同じ位置にとどまるはずです。これは Firefox 3.0 と Internet Explorer 7 および 8 でのみテストしました。

この動作を示す自己完結型の例のソースを投稿しました。

于 2009-03-25T06:24:25.300 に答える
0

ドキュメントに従って、fixedcenter を次のように設定します。

"contained" true オプションと同様に、固定中心配置を有効にします。ただし、プロパティを true に設定するのとは異なり、プロパティが「contained」に設定されている場合、オーバーレイがビューポートに対して大きすぎる場合、ユーザーがウィンドウをスクロールまたはサイズ変更しても (ウィンドウが十分に大きくなるまで)、オーバーレイは自動的に中央に配置されません。オーバーレイを含める)。これは、ユーザーがアクセスする必要があるヘッダーとフッターの両方の UI コントロールがオーバーレイにある場合に役立ちます。

http://developer.yahoo.com/yui/docs/YAHOO.widget.Overlay.html

于 2013-02-19T15:24:15.983 に答える