В jQuery как я могу установить" верхние,левые " свойства элемента со значениями позиции относительно родителя, а не документа?
.offset([coordinates]) метод устанавливает координаты элемента, но только относительно документа. Тогда как я могу установить координаты элемента, но относительно родителя?
Я нашел это .position() метод получает только "верхние, левые" значения относительно родителя, но он не устанавливает никаких значений.
Я пробовал с
$("#mydiv").css({top: 200, left: 200});
но не работает.
6 ответов:
чтобы установить положение относительно родителя, вам нужно установить
position:relativeродитель, аposition:absoluteэлемента$("#mydiv").parent().css({position: 'relative'}); $("#mydiv").css({top: 200, left: 200, position:'absolute'});это работает, потому что
position: absolute;позиции относительно ближайшего расположенный parent (т. е. ближайший родитель с любым свойством позиции, отличным от значения по умолчаниюstatic).
вы можете попробовать jQuery UI в .позиция метод.
$("#mydiv").position({ of: $('#mydiv').parent(), my: 'left+200 top+200', at: 'left top' });
смещение кода динамическое для динамической страницы
var pos=$('#send').offset().top; $('#loading').offset({ top : pos-220});
Я обнаружил, что если переданное значение является строковым типом, за ним должен следовать 'px' (т. е. 90px), где, если значение является целым числом, оно автоматически добавит px. свойства ширины и высоты более снисходительны (любой тип работает).
var x = "90"; var y = "120" $(selector).css( { left: x, top: y } ) //doesn't work $(selector).css( { left: x + "px", top: y + "px" } ) //does work x = 90; y = 120; $(selector).css( { left: x, top: y } ) //does work
освежая мою память на установке позиции, я прихожу к этому так поздно, что не знаю, увидит ли его кто-нибудь еще, но --
мне не нравится положение с помощью
css(), хотя часто это нормально. Я думаю, что лучшим вариантом является использование пользовательского интерфейса jQuery поposition()сеттер, как отметил xdazz. Однако если jQuery UI по какой-то причине не является опцией (но 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 году, поэтому этот метод работает сейчас и когда был задан исходный вопрос.
Comments