Действительно ли возможно сменить положение DIV от абсолютного до родственника (и от относительно абсолюта)? DIV должен остаться на том же месте.
вы можете изменить этот атрибут с помощью
$(object).css({position: 'absolute'});
Например:
Вы можете использовать методы jQuery .position ()
или .offset ()
, чтобы установить атрибуты css "top" и "left"
, таким образом ваш объект должен оставаться в своей позиции, меняя
с относительный -> абсолютный.
Я не думаю, что это работает наоборот.
демонстрационный код: http://jsbin.com/uvoka
prototype.js имеет element.absolutize () и element.relativize, которые работают очень хорошо.
Проблема с переходом от относительного к абсолютному состоит в том, что element.offsetTop и offsetLeft
передают только смещение вашего элемента его родительскому элементу. Вам необходимо измерить совокупное смещение ( например,
the offset of your element to its parent +
the offset of the parent to its parent +
the offset of its parent to its parent +
и т. д.)
Поскольку форматирование в комментариях не работает, я опубликую здесь решение
$(object).css({position: 'absolute',top: dy, left:dx});
// dy, dx - some coordinates
$(object).css({position: 'relative'});
Не работает: положение элемента после изменения на относительное другое.
Но когда я сохранил смещение и снова установил его после изменения на относительное, положение такое же:
$(object).css({position: 'absolute',top: dy, left:dx});
var x = $(object).offset().left;
var y = $(object).offset().top;
$(object).css({position: 'relative'});
$(object).offset({ top: y, left: x });
Вы можете легко изменить его с относительного на абсолютное, используя значения offsetLeft и offsetTop в качестве стилей left и top.
Обратное сложнее. В основном вам придется изменить его на относительное и посмотреть, где он оказался, а затем вычислить новые значения смещения из текущего смещения и желаемого местоположения.
Обратите внимание, что когда позиционирование является относительным, элемент является частью потока страницы и может влиять на другие элементы. Когда позиция является абсолютной, элемент находится за пределами потока страницы и не влияет на другие элементы. Итак, если вы переключаетесь между абсолютным и относительным позиционированием, вам может потребоваться внести изменения и в другие элементы, если вы не хотите, чтобы они перемещались.