Dapatkan dan atur posisi dengan jQuery .offset ()


106

Bagaimana cara mendapatkan dan mengatur posisi elemen dengan .offsetmetode jQuery ?

Katakanlah saya memiliki div layer1dan lainnya layer2. Bagaimana saya bisa mendapatkan posisi layer1dan mengatur posisi yang sama layer2?


6
Denise, apakah Anda bahkan memeriksa metode .offset () di situs jQuery? Juga, mengapa Anda tidak menerima jawaban Steve di bawah ini ?!
Rafid

1
@Rafid dia pada dasarnya tidak pernah kembali
jcollum

6
Bisakah saya mendapatkan poinnya?
ganders

Jawaban:


191
//Get
var p = $("#elementId");
var offset = p.offset();

//set
$("#secondElementId").offset({ top: offset.top, left: offset.left});

7
Anda bisa melewati seluruh offsetobjek, jadi //setakan menjadi: $("#secondElementId").offset(offset)
mecampbellsoup

Hei! bagaimana saya bisa mengatur ke bawah dan kanan div? tidak ada bagian bawah, hak properti di offset
JerryGoyal

34

Saya merekomendasikan opsi lain. jQuery UI memiliki fitur posisi baru yang memungkinkan Anda untuk memposisikan elemen relatif satu sama lain. Untuk dokumentasi dan demo lengkap, lihat: http://jqueryui.com/demos/position/#option-offset .

Berikut salah satu cara untuk memposisikan elemen Anda menggunakan fitur posisi:

var options = {
    "my": "top left",
    "at": "top left",
    "of": ".layer1"
};
$(".layer2").position(options);

13
Jawaban ini ditolak dua kali, tanpa penjelasan. Tolong beritahu mengapa, jika Anda tidak memilih jawaban saya. Terima kasih!
KSev

2
Mungkin itu karena Anda menggunakan jQuery UI sedangkan OP hanya meminta jQuery.
kereta dorong bayi

7
sering kali orang bertindak terlalu jauh dengan suara rendah. Jangan berasumsi bahwa jawaban yang lebih luas tidak berguna bagi orang lain bahkan jika itu mungkin merupakan perluasan dari OP. Jangan biarkan saya memulai dengan 'ditutup karena ini bukan pertanyaan yang tepat';)
mendarat

@KSev - Saya dari masa depan. jQuery masih belum memiliki setter di .position... Lihat: api.jquery.com/position
Koshinae

@Kinae Ini bagian dari jQuery "UI". Lihat tautan di atas atau coba jqueryui.com/position . Selain itu, jika Anda menggunakan jQuery, Anda mungkin ingin mempertimbangkan untuk menggunakan angularJS 2.0. Namun, saya harap Anda mempertahankan kode lama.
KSev

16

Ini bisa dilakukan tetapi Anda harus tahu bahwa menggunakan offset()set posisi elemen relatif terhadap dokumen:

$('.layer1').offset( $('.layer2').offset() );

0

Ini adalah opsi. Ini hanya untuk koordinat x.

var div1Pos = $("#div1").offset();
var div1X = div1Pos.left;
$('#div2').css({left: div1X});

offset (). left dan css.left bukanlah hal yang sama, keduanya mungkin memiliki nilai yang sama tergantung pada struktur halaman.
Kalle

Saya memberi +1. Tampaknya berfungsi dengan baik untuk saya dan pada dasarnya sama dengan jawaban yang tidak dipilih di bawah ini yang memiliki 85+ suara.
Paul Nelson Baker

Bekerja untuk saya. Terima kasih atas kontribusinya!
Erlend KH

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.