Jak mogę określić bezwzględną pozycję elementu na bieżącym widocznym ekranie (widoku) za pomocą jQuery?Bezwzględne położenie elementu na ekranie za pomocą jQuery
Mam position:relative
, więc offset() spowoduje tylko przesunięcie w rodzica.
Mam hierarchiczne divy, więc $("#me").parent().offset() + $("#me").offset()
też nie pomaga.
Potrzebuję pozycji w oknie, a nie dokumentu, więc podczas przewijania dokumentu wartość powinna się zmienić.
Wiem, że mogłem dodać wszystkie offsety rodzica, ale chcę czystszego rozwiązania.
var top = $("#map").offset().top +
$("#map").parent().offset().top +
$("#map").parent().parent().offset().top +
$("#map").parent().parent().parent().offset().top;
Wszelkie pomysły?
Aktualizacja: muszę uzyskać dokładny lukę w pikselach między szczycie mojej div i górnej części dokumentu, w tym obszycia/marginesów/offset?
Mój kod:
HTML
<div id="map_frame" class="frame" hidden="hidden">
<div id="map_wrapper">
<div id="map"></div>
</div>
</div>
CSS
#map_frame{
border:1px solid #800008;
}
#map_wrapper {
position:relative;
left:2%;
top:1%;
width:95%;
max-height:80%;
display:block;
}
#map {
position:relative;
height:100%;
width:100%;
display:block;
border:3px solid #fff;
}
jQuery, aby zmienić rozmiar mapy, aby wypełnić ekran *
var t = $("#map").offset().top +
$("#map").parent().offset().top +
$("#map").parent().parent().offset().top +
$("#map").parent().parent().parent().offset().top;
$("#map").height($(window).height() - t - ($(window).height() * 8/100));
Dzięki ...
'offset()' zwraca relację offset do dokumentu, nie ma znaczenia, w jaki sposób umieściłeś swoje elementy. W jaki sposób pozycja elementu względem, cokolwiek, zmieni się na przewijaniu? Jesteś pewien, że nie szukasz tylko 'scrollTop()'? – adeneo
offset() zwróci przesunięcie z elementu nadrzędnego, jeśli styl jest 'position: relative'. – ATOzTOA
Podczas przewijania zmienia się odległość między elementem a górną częścią ekranu, prawda? – ATOzTOA