Преобразуйте абсолютное положение в родственника

Действительно ли возможно сменить положение DIV от абсолютного до родственника (и от относительно абсолюта)? DIV должен остаться на том же месте.

5
задан John 30 March 2010 в 14:01
поделиться

4 ответа

вы можете изменить этот атрибут с помощью

$(object).css({position: 'absolute'});

Например:
Вы можете использовать методы jQuery .position () или .offset () , чтобы установить атрибуты css "top" и "left" , таким образом ваш объект должен оставаться в своей позиции, меняя с относительный -> абсолютный.

Я не думаю, что это работает наоборот.

демонстрационный код: http://jsbin.com/uvoka

5
ответ дан 18 December 2019 в 10:43
поделиться

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 +

и т. д.)

1
ответ дан 18 December 2019 в 10:43
поделиться

Поскольку форматирование в комментариях не работает, я опубликую здесь решение

$(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 }); 
8
ответ дан 18 December 2019 в 10:43
поделиться

Вы можете легко изменить его с относительного на абсолютное, используя значения offsetLeft и offsetTop в качестве стилей left и top.

Обратное сложнее. В основном вам придется изменить его на относительное и посмотреть, где он оказался, а затем вычислить новые значения смещения из текущего смещения и желаемого местоположения.

Обратите внимание, что когда позиционирование является относительным, элемент является частью потока страницы и может влиять на другие элементы. Когда позиция является абсолютной, элемент находится за пределами потока страницы и не влияет на другие элементы. Итак, если вы переключаетесь между абсолютным и относительным позиционированием, вам может потребоваться внести изменения и в другие элементы, если вы не хотите, чтобы они перемещались.

0
ответ дан 18 December 2019 в 10:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: