Ich versuche, die Position eines Elements innerhalb des Fensters wie folgt zu ermitteln:
var link = $(element);
var offset = link.offset();
var top = offset.top;
var left = offset.left;
var bottom = $(window).height() - link.height();
bottom = offset.top - bottom;
var right = $(window).width() - link.width();
right = offset.left - right;
Allerdings haben die unteren und rechten -
vor sich ... Warum ist das so? Da die Zahlen korrekt sind, sollten sie NICHT minus sein.
Sie können die Verwendung .position () für diese
var link = $(element); var position = link.position(); //cache the position var right = $(window).width() - position.left - link.width(); var bottom = $(window).height() - position.top - link.height();
quelle
windows.width()
und ähnliches auch für weitere Berechnungen.Ich denke
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> <div>Testing</div> <div id="result" style="margin:1em 4em; background:rgb(200,200,255); height:500px"></div> <div style="background:rgb(200,255,200); height:3000px; width:5000px;"></div> <script> (function(){ var link=$("#result"); var top = link.offset().top; // position from $(document).offset().top var bottom = top + link.height(); // position from $(document).offset().top var left = link.offset().left; // position from $(document).offset().left var right = left + link.width(); // position from $(document).offset().left var bottomFromBottom = $(document).height() - bottom; // distance from document's bottom var rightFromRight = $(document).width() - right; // distance from document's right var str=""; str+="top: "+top+"<br>"; str+="bottom: "+bottom+"<br>"; str+="left: "+left+"<br>"; str+="right: "+right+"<br>"; str+="bottomFromBottom: "+bottomFromBottom+"<br>"; str+="rightFromRight: "+rightFromRight+"<br>"; link.html(str); })(); </script>
Das Ergebnis ist
top: 44 bottom: 544 left: 72 right: 1277 bottomFromBottom: 3068 rightFromRight: 3731
in Chrome Browser von mir.
Wenn das Dokument scrollbar ist, wird
$(window).height()
die Höhe des Browser-Ansichtsfensters zurückgegeben, nicht die Breite des Dokuments, dessen Teile im Bildlauf ausgeblendet sind. Siehe http://api.jquery.com/height/ .quelle
Hier ist eine Abfragefunktion, die ein Objekt einer beliebigen Klasse oder ID auf der Seite zurückgibt
var elementPosition = function(idClass) { var element = $(idClass); var offset = element.offset(); return { 'top': offset.top, 'right': offset.left + element.outerWidth(), 'bottom': offset.top + element.outerHeight(), 'left': offset.left, }; }; console.log(elementPosition('#my-class-or-id'));
quelle
Vanille Javascript Antwort
var c = document.getElementById("myElement").getBoundingClientRect(); var bot = c.bottom; var rgt = c.right;
Um klar zu sein, kann das Element alles sein, solange Sie ihm eine ID
<img>
<div>
<p>
usw. zugewiesen haben .zum Beispiel
<img id='myElement' src='/img/logout.png' className='logoutImg img-button' alt='Logout' />
quelle