Vraag JQuery - .position retourneert geen offset ten opzichte van bovenliggend item


ik gebruik .position om de verschuiving te vinden van waar het element relatief is ten opzichte van het bovenliggende element, lijkt het echter een waarde terug te geven die de verschuiving is van een ouder boven de voorouderboom.

Ik heb een knop en zijn ingepakt met een div en het is het enige element van die div. De div is goed bestuurd. .position retourneert een waarde zoals {left:780, top:370}, wanneer de echte waarde rond zou moeten zijn {left:200, top:0}.

Ik gebruik jQuery 1.4


11
2018-05-16 02:47


oorsprong


antwoorden:


Als ik het goed heb, denk ik dat dit een CSS-probleem is, niet noodzakelijkerwijs een jQuery-exemplaar. Ik heb begrepen dat de standaardwaarde van de CSS "positie" -eigenschap statisch is (niet absoluut, relatief) en positionering wordt berekend ten opzichte van de eerste voorouder die niet is ingesteld op statisch.

Als het element geen voorouder heeft met een niet-statische positie, wordt het element relatief ten opzichte van het html-blok gepositioneerd.

Als u een div wilt positioneren ten opzichte van een wrapper-div, probeer dan de eigenschap position van de wrapper div in te stellen op iets anders dan statisch (relatief, absoluut), afhankelijk van uw behoeften.

Hier is een eenvoudig voorbeeld dat dit laat zien ..

<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>

19
2018-05-16 02:57