Освежая память о настройке позиции, я прихожу к этому так поздно, я не знаю, увидит ли это кто-нибудь еще, но -
Я не люблю устанавливать положение css()
, хотя часто это нормально. Я думаю, что лучше всего использовать position()
установщик jQuery UI, как отметил xdazz. Однако, если пользовательский интерфейс jQuery по какой-то причине не является опцией (хотя jQuery есть), я предпочитаю это:
const leftOffset = 200;
const topOffset = 200;
let $div = $("#mydiv");
let baseOffset = $div.offsetParent().offset();
$div.offset({
left: baseOffset.left + leftOffset,
top: baseOffset.top + topOffset
});
Это имеет то преимущество, что не произвольно устанавливает $div
родителя в относительное положение (что, если $div
родитель сам по себе абсолютно позиционирован внутри чего-то еще?). Я думаю, что единственный главный крайний случай - это если $div
нет offsetParent
, не уверен, вернется ли он document
, null
или что-то еще полностью.
offsetParent
была доступна с jQuery 1.2.6, где-то в 2008 году, поэтому этот метод работает сейчас и когда был задан оригинальный вопрос.
$("#mydiv").css({top: '200px', left: '200px', position:'absolute'});
<- хорошо$("#mydiv").css({top: '200', left: '200', position:'absolute'});
<- плохо. Очевидно, что если значения позиции являются строками , вы должны включить единицы измерения, иначе это не будет иметь никакого эффекта.