Odświeżam pamięć o ustawianiu pozycji, dochodzę do tego tak późno, że nie wiem, czy ktoś inny to zobaczy, ale -
Nie lubię ustawiać pozycji za pomocą css()
, choć często jest to w porządku. Myślę, że najlepszym rozwiązaniem jest użycie position()
setera jQuery UI, jak zauważył xdazz. Jeśli jednak interfejs użytkownika jQuery z jakiegoś powodu nie jest opcją (a jQuery jest), wolę to:
const leftOffset = 200;
const topOffset = 200;
let $div = $("#mydiv");
let baseOffset = $div.offsetParent().offset();
$div.offset({
left: baseOffset.left + leftOffset,
top: baseOffset.top + topOffset
});
Ma to tę zaletę, że nie można arbitralnie ustawiać $div
rodzica na względne pozycjonowanie (co by było, gdyby $div
rodzic sam w sobie był bezwzględnie umieszczony wewnątrz czegoś innego?) Myślę, że jedynym ważnym przypadek krawędź jest, jeśli $div
nie ma offsetParent
, nie wiem, czy byłoby powrócić document
, null
albo coś zupełnie innego.
offsetParent
była dostępna od wersji jQuery 1.2.6, gdzieś w 2008 roku, więc ta technika działa teraz i wtedy, gdy zadano pierwotne pytanie.
$("#mydiv").css({top: '200px', left: '200px', position:'absolute'});
<- dobrze$("#mydiv").css({top: '200', left: '200', position:'absolute'});
<- źle. Wygląda na to, że jeśli wartości pozycji są łańcuchami , musisz uwzględnić jednostki, inaczej nie będzie to miało wpływu.