JQuery kullanarak bir öğenin mutlak konumunu nasıl bulabilirim?


398

JQuery kullanarak bir öğenin mutlak konumunu, yani pencerenin başlangıcına göre bulmanın bir yolu var mı?

Yanıtlar:


650

.offset() bir öğenin ofset konumunu basit bir nesne olarak döndürecektir, örneğin:

var position = $(element).offset(); // position = { left: 42, top: 567 }

Bu dönüş değerini, diğer öğeleri aynı noktada konumlandırmak için kullanabilirsiniz:

$(anotherElement).css(position)

90
Ben her zaman bunu unutmak ve google: p
Aren

16
Bu, sınırlardaki vb. Farklılıklar nedeniyle her zaman mutlak pozisyona dönmüyor gibi görünüyor
Tom

8
Krom kullanıyorum ve offset()uygun üst koordinatı döndürmüyor. Bunun yerine belgedeki öğenin üst koordinatından yaklaşık 300 piksel daha fazla döndürür. Neden??
SoLoGHoST

1
chrome, FF ve IE farklı sonuçlar veriyor :(
Rizwan Mumtaz

3
@Aren Ben her zaman bu bir unutmak ve her zaman eğlenceli yorumunuzu bulabilirsiniz :)
Alex

197

$(element).offset()Bir öğenin belgeye göre konumunu belirten not edin . Bu çoğu durumda harika çalışır, ancak durumunda position:fixedbeklenmedik sonuçlar alabilirsiniz.

Belgeniz ise görüntü alanından daha uzun ve dokümanın alt kısmına doğru dikey olarak kaydırdığınız, sonra position:fixedöğenin offset()değeri daha büyük olacaktır Eğer kaydırdığınız miktarına göre beklenen değerin.

Pozisyon: sabit öğedeki belge yerine görünüm penceresine (pencere) göre bir değer arıyorsanız , belgenin scrollTop()değerini sabit öğenin değerinden çıkarabilirsiniz offset().top. Misal:$("#el").offset().top - $(document).scrollTop()

Eğer position:fixedöğenin ofset üstüdür belge , okumak istediğiniz parseInt($.css('top'))yerine.


8
Tam olarak bunu arıyordum! Benim gibi çaylak için: çıkarılacak değer$(document).scrollTop()
Dr. Gianluigi Zane Zanettini

3
Müthiş! Bu en iyi cevap olmalı!
Shivanshu Goyal
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.