Ini mungkin pertanyaan yang sangat sederhana, tetapi bagaimana cara saya mendapatkan offset yang tepat dari elemen di jQuery?
Dapat saya lakukan:
$("#whatever").offset().left;
dan itu valid.
Tetapi tampaknya:
$("#whatever").offset().right
tidak ditentukan.
Jadi bagaimana cara melakukannya di jQuery?
Terima kasih!!
$whatever[0].getBoundingClientRect().right
. ini relatif terhadap tepi kiri jendela.var $whatever = $('#whatever'); var ending_right = ($(window).width() - ($whatever.offset().left + $whatever.outerWidth()));
Referensi: .outerWidth ()
sumber
var rt = ($(window).width() - ($whatever.offset().left + $whatever.outerWidth()));
Mungkin saya salah memahami pertanyaan Anda, tetapi offset seharusnya memberi Anda dua variabel: horizontal dan vertikal. Ini menentukan posisi elemen. Jadi yang Anda cari adalah:
$("#whatever").offset().left
dan
$("#whatever").offset().top
Jika Anda perlu mengetahui di mana batas kanan elemen Anda, maka Anda harus menggunakan:
$("#whatever").offset().left + $("#whatever").outerWidth()
sumber
Hanya tambahan dari apa yang dikatakan Greg:
Kode ini akan mendapatkan posisi kanan relatif terhadap sisi kiri. Jika tujuannya adalah untuk mendapatkan posisi sisi kanan relatif ke kanan (seperti saat menggunakan
right
properti CSS ) maka penambahan kode diperlukan sebagai berikut:Kode ini berguna dalam animasi di mana Anda harus mengatur sisi kanan sebagai jangkar tetap ketika Anda tidak dapat mengatur
right
properti di CSS pada awalnya .sumber
Sebenarnya ini hanya berfungsi ketika jendela tidak digulir sama sekali dari posisi kiri atas.
Anda harus mengurangi nilai window scroll untuk mendapatkan offset yang berguna untuk memposisikan ulang elemen sehingga tetap berada di halaman:
var offset = $('#whatever').offset(); offset.right = ($(window).width() + $(window).scrollLeft()) - (offset.left + $('#whatever').outerWidth(true)); offset.bottom = ($(window).height() + $(window).scrollTop()) - (offset.top + $('#whatever').outerHeight(true));
sumber
Brendon Crawford memiliki jawaban terbaik di sini (dalam komentar), jadi saya akan memindahkannya ke jawaban sampai dia melakukannya (dan mungkin memperluas sedikit).
var offset = $('#whatever').offset(); offset.right = $(window).width() - (offset.left + $('#whatever').outerWidth(true)); offset.bottom = $(window).height() - (offset.top + $('#whatever').outerHeight(true));
sumber
Ada API DOM asli yang melakukannya di luar kotak -
getBoundingClientRect
:document.querySelector("#whatever").getBoundingClientRect().right
sumber
Mendapatkan titik jangkar dari a
div/table (left) = $("#whatever").offset().left;
- ok!Mendapatkan titik jangkar
div/table (right)
Anda dapat menggunakan kode di bawah ini.$("#whatever").width();
sumber