JQuery - .position не возвращает смещение относительно родителя - PullRequest
11 голосов
/ 16 мая 2010

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

У меня есть кнопка, и она завернута в div и является единственным элементом этого div. DIV плавает прямо. .position возвращает значение типа {left:780, top:370}, когда истинное значение должно быть около {left:200, top:0}.

Я использую jquery 1.4

1 Ответ

19 голосов
/ 16 мая 2010

Если я прав, я думаю, что это проблема CSS, а не проблема jQuery. Насколько я понимаю, значение по умолчанию свойства CSS "position" является статическим (не абсолютным, относительным), и позиционирование вычисляется относительно первого предка, который не установлен в static.

Если у элемента нет предка с нестатической позицией, элемент будет расположен относительно блока html.

Если вы хотите расположить div относительно div-оболочки, попробуйте установить свойство позиции div-оболочки для чего-то отличного от static (относительное, абсолютное), в зависимости от ваших потребностей.

Вот простой пример, демонстрирующий это ..

<html>
  <style type="text/css">
    .divOuter { border:1px solid Green;  width:350px; height:50px; padding:2px; margin-left:80px; }
    .divInner{border:1px solid Blue;  width:200px; height:50px; padding:2px; position:absolute; left:100px;}
 </style>
 <body>
 <div class="divOuter">
  <div  class="divInner">
     positioned relative to html block 
  </div>
  </div>
      <div  class="divOuter" style="position:relative;">
   <div class="divInner">
     positioned relative to parent div
  </div>
  </div>
  </body>
  </html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...