1

jquery を使用して要素の位置を取得し.offset()、div を に設定し、それを から取得した情報に基づいて設定position:absolute;しています。lefttopoffset()

position:absoluteが次のように定義されているため、すべての要素の親が静的に配置されている限り、これは機能します。

「要素は、最初に配置された (静的ではない) 祖先要素に対して相対的に配置されます」

したがって、この問題を解決するための 2 つの選択肢が提示されます。

  1. どういうわけか、要素がドキュメントに対して相対的に配置されるように強制します。これを可能にするcss仕様には何もありません。(私が間違っている場合は修正してください)。
  2. を使用する代わりにoffset()、最初に配置された祖先要素に対する要素の位置を取得する関数を使用します。(これを行うjQuery関数は見当たりません。position()要素の親に対して相対的に取得します)。

これら2つのオプションのいずれかを行うにはどうすればよいですか?

4

2 に答える 2

2

あなたが受け入れることができるように答えとしてコメントを追加しました:

ノードを削除してボディに再接続し、ドキュメントに対して相対的にします。理想的ではありませんが、正しく配置できます。

于 2012-04-30T13:07:09.757 に答える
1

その説明を上書きするため、実際には左/上を設定することができます。「絶対」のままにすると、説明されているように、その前の最初の静的要素に対して相対的な位置に配置されます。左/上に設定すると、正しく配置されます。

これが当てはまらないのは、親要素が相対的な位置にある場合のみです。その後、あなたは一種のねじ込みです:/

于 2012-04-27T19:20:11.283 に答える