Comment trouver la distance en pixels entre l'élément html et l'un des côtés du navigateur (ou de la fenêtre) (gauche ou haut) en utilisant jQuery?
Vous pouvez utiliser la fonction offset
pour cela. Il vous donne la position de l'élément par rapport au (gauche, haut) du document :
var offset = $("#target").offset();
display("span is at " + offset.left + "," + offset.top +
" of document");
exemple en direct Sur mon navigateur, cet exemple indique que la durée que nous avons ciblée est à 157,47 (gauche, haut) du document. Cela est dû au fait que j'ai appliqué une grande valeur de remplissage à l'élément body
, et utilisé une étendue avec un espaceur au-dessus et du texte devant.
Voici un deuxième exemple montrant un paragraphe en haut à gauche, en haut du document, en indiquant 0,0 comme position (et en montrant plus tard une plage décalée à gauche et en haut, 129, 19 sur mon navigateur).
jQuery.offset
doit être combiné avec scrollTop
et scrollLeft
comme indiqué dans ce diagramme:
Démo:
function getViewportOffset($e) {
var $window = $(window),
scrollLeft = $window.scrollLeft(),
scrollTop = $window.scrollTop(),
offset = $e.offset();
return {
left: offset.left - scrollLeft,
top: offset.top - scrollTop
};
}
$(window).on("load scroll resize", function() {
var viewportOffset = getViewportOffset($("#element"));
$("#log").text("left: " + viewportOffset.left + ", top: " + viewportOffset.top);
});
body { margin: 0; padding: 0; width: 1600px; height: 2048px; background-color: #CCCCCC; }
#element { width: 384px; height: 384px; margin-top: 1088px; margin-left: 768px; background-color: #99CCFF; }
#log { position: fixed; left: 0; top: 0; font: medium monospace; background-color: #EEE8AA; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<!-- scroll right and bottom to locate the blue square -->
<div id="element"></div>
<div id="log"></div>