JQuery .offset () ile pozisyon alın ve ayarlayın


106

JQuery ile bir öğenin konumu nasıl alınır ve ayarlanır .offset yöntemiyle ?

Diyelim ki bir div layer1ve başka bir tane var layer2. layer1Aynı konumu nasıl alabilirim ve aynı konumu nasıl ayarlayabilirim layer2?


6
Denise, jQuery web sitesinde .offset () yöntemini kontrol ettin mi? Ayrıca, Steve'in aşağıdaki cevabını neden kabul etmiyorsunuz ?!
Rafid

1
@Rafid o temelde asla geri gelmedi
jcollum

6
Puanlarını alabilir miyim?
ganders

Yanıtlar:


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

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

7
Tüm offsetnesneyi geçebilirsiniz , böylece //setşu hale gelir: $("#secondElementId").offset(offset)
mecampbellsoup

Hey! div'in altına ve sağına nasıl ayarlayabilirim? ofsette alt, doğru mülk yok
JerryGoyal

34

Başka bir seçenek öneriyorum. jQuery UI, öğeleri birbirine göre konumlandırmanıza izin veren yeni bir konum özelliğine sahiptir. Belgelerin tamamı ve demo için bkz: http://jqueryui.com/demos/position/#option-offset .

Konum özelliğini kullanarak öğelerinizi konumlandırmanın bir yolu:

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

13
Bu cevap, açıklama yapılmadan iki kez reddedildi. Lütfen nedenini söyleyin, cevabıma olumsuz oy verirseniz. Teşekkürler!
KSev

2
Belki bunun nedeni, OP yalnızca jQuery'yi sorarken jQuery kullanıcı arayüzünü kullanmanızdır.
çocuk arabası

7
genellikle insanlar aşağı oylama ile çok ileri giderler. OP'nin bir genişlemesi olsa bile, daha geniş bir cevabın diğerleri için faydasız olduğunu varsaymayalım. Beni 'bu uygun bir soru olmadığı için kapatıldı' üzerine başlatmayın;)
indi

@KSev - Ben gelecekten geliyorum. jQuery'de hala bir ayarlayıcı yok .position... Bakınız: api.jquery.com/position
Koshinae

@Koshinae jQuery "UI" nin bir parçasıdır. Yukarıdaki bağlantıya bakın veya jqueryui.com/position adresini deneyin . Ayrıca, jQuery kullanıyorsanız, angularJS 2.0 kullanmayı düşünebilirsiniz. Ancak, eski kodu koruduğunuzu umuyorum.
KSev

16

Yapılabilir, ancak kullanmanın offset()öğenin belgeye göre konumunu belirlediğini bilmelisiniz :

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

0

İşte bir seçenek. Bu sadece x koordinatları içindir.

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

offset (). left ve css.left aynı şey değildir, sayfa yapısına bağlı olarak aynı değerlere sahip olabilir veya olmayabilir.
Kalle

+ 1'ledim. Benim için gayet iyi çalışıyor gibi görünüyor ve 85'den fazla oyu olan aşağıdaki seçilmemiş cevapla aynı.
Paul Nelson Baker

Benim için çalıştı. Katkı için teşekkürler!
Erlend KH

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.