0

要素の水平位置を変更する必要があります。これを行うには、そのleft属性を で変更します.css('left', value)left値が定義されていない場合、要素はあるべき場所に相対的に移動します。

leftここで、要素を別の場所に移動する位置を再計算する必要があります。そのためには、属性を変更していない場合に要素があるべき位置が必要です。

値を削除しleftてその位置を要求することもできますが、要素も移動し、要素を位置間でジャンプさせる可能性があるため、それを避けたいと考えています。

要素が配置される位置を取得するにはどうすればよいですか?

4

5 に答える 5

1

leftスタイルを複数回変更しても、要素は位置間をジャンプしません。関数が実行されている限り、ブラウザーに更新はありません。スタイルを安全にリセットしleft、位置を取得してから、新しいleft値を設定できます。

于 2013-01-09T21:10:04.810 に答える
1

1 つの方法は、DOM 対応の要素のデフォルトの左の値を読み取り、それを要素のdata-*属性として要素に追加することです。それを呼び出しましょうdata-default-left。さらにデフォルト値が必要な場合は、いつでもその値を参照できます。

data-*jQuery のメソッドを使用して簡単に操作できます.data()

于 2013-01-09T21:08:21.763 に答える
0

単純。最初の左の金額を dom ロード時に変数に保存し、後で他の計算を行うときにそれを参照します。

$(function () { 

    var $element = $("#ME_ELEMENT_ID");

    var initialLeft = $element.offset().left;

    // Change your left here

    $element.css('left', '200px');

    // initialLeft still contains the old value

});
于 2013-01-09T21:13:50.827 に答える
0

左を 0 に設定し、再計算し、左を新しい位置に設定するのが、この場合の最も簡単な変更です。私の経験では、ブラウザーは css の更新の間に再描画されません。

その他のオプション:

  1. 相対位置ではなく絶対位置を使用します。それからあなたの起源は一貫しています。

  2. jQuery UI position pluginを使用します。要素の位置を別の要素に対して相対的に設定できます。非常に便利。

于 2013-01-09T21:10:25.347 に答える
0

.data()移動を開始する前に、この情報を保存するために使用するのはどうですか? 次に、必要なときにいつでもそこに戻すだけです。

于 2013-01-09T21:10:26.373 に答える