2013-02-27 10 views
9

Pierwszy element div to pasek '#icon-selection-menu', jego pozycja bezczynna to bezwzględna z top:0px i left:0px. Pojawia się więc w lewym górnym rogu wewnątrz div zawartości.Jak pozycjonować div na początku innego elementu div za pomocą javascript?

Głęboko w treści div dzieci dostałem inne divy, które są rzeczywiście rodzaju ".emoticon-button". Ich pozycja jest względna wewnątrz rodzica. Na takim przycisku kliknij Chciałbym ustawić pierwszy div tuż nad przyciskiem, dostosowując jego dolną granicę do górnej krawędzi przycisku.

Jak mogę uzyskać top i lewo wartości ustawić $('#icon-selection-menu').top i $('#icon-selection-menu').left?

+0

dodaje względną właściwość css dla tego wyświetlenia: relative; – EnterJQ

+0

Proszę podać skrzypce –

Odpowiedz

18

jQuery zapewnia .offset(), aby uzyskać pozycję dowolnego elementu względem dokumentu. Od #icon-selection-menu jest już umieszczona w stosunku do dokumentu, można użyć to:

var destination = $('.emoticon-button').offset(); 
$('#icon-selection-menu').css({top: destination.top, left: destination.left}); 

$('#icon-selection-menu') zostanie umieszczony w lewym górnym rogu $('.emoticon-button').

(1) jQuery przyjęto z powodu użycia w pytaniu $.

+1

Druga linia może być '$ (" # icon-selection-menu "). Css (miejsce docelowe);' could not it it? Lub '$ ('# icon-selection-menu'). Offset (miejsce docelowe);' –

+0

@ BobStein-VisiBone Tak! – bfavaretto

0

można uzyskać pozycję elementu za pomocą poniższego jQuery

var position=$('#icon-selection-menu').position(); 
var left=position.left; 
var right=position.right 

i kliknięcie tego przycisku można ustawić go powyżej używając

$("#ID").live("click",function(){ 
    $('.emoticon-button').animate({left:left,right:right}); 
}); 
+0

pozycja() zwraca górną i lewą wewnątrz pola nadrzędnego, przykro mi, że nie działa dla mnie. Dziękuję za radę. – zuba

0

get”.emoticon przycisku "pozycja (lewa, góra). Następnie zastosuj to samo do "# ikony-menu wyboru-opcji". Nastąpiłaby korekta na górze i na lewo, aby dopasować się do emotikonów.

+0

position() zwraca górną i lewą część pola nadrzędnego, przykro mi, że to nie działa. Dziękuję za radę. – zuba

5

Można uzyskać górnej i lewej pozycji div przy użyciu offsetTop i offsetLeft

Przykład: `

$('#div-id').offset().top; 
$('#div-id').offset().left; 
+0

Dziękuję, Prasath! Głosowałem w górę, ale oznaczałem jako rozwiązanie drugie stanowisko, ponieważ jest bardziej szczegółowe. – zuba

1

JavaScript posiada wbudowany w wersji co @bfavaretto wymienione. Jest nieco dłuższy niż wersja Jquery, ale ludzie tacy jak ja, którzy nie używają Jquery, mogą go potrzebować.

var iconselect = document.getElementById("icon-selection-menu"); 
var emoticonbtn = document.getElementById("emoticon-button"); 
var oTop = emoticonbtn.offsetTop; 
var oLeft = emoticonbtn.offsetLeft; 
iconselect.style.top = oTop; 
iconselect.style.left = oLeft; 
iconselect.style.position = "absolute"; 

Można oczywiście dodać jednostki do tego systemu, takie jak px lub inne rzeczy. Zauważ, że to, co zrobiłem powyżej, było tylko przykładem i dotyczy dwóch oddzielnych elementów z identyfikatorami, a nie klasami. Pierwsze dwa wiersze kodu będą się różnić w zależności od kodu. Element iconselect jest tym, co próbuję wyrównać, a element emoticonbtn to przycisk, który naciskasz, aby wyświetlić iconselect. Najważniejszymi częściami kodu podsumować:

elementtomove.offsetTop; //distance from top of screen 
elementtomove.offsetLeft; //distance from left of screen 

Nadzieja to pomaga ludziom, którzy nie chcą korzystać z jQuery!

+0

[https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetTop](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetTop) – IamGuest

+0

[offsetLeft] (https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetLeft) – IamGuest

+0

conselect.style.top = oTop + "px"; iconselect.style.left = oLeft + "px"; W przeciwnym razie nie działa i stosuje tylko właściwość bezwzględną. –