Estoy tratando de obtener la posición de un elemento dentro de la ventana así:
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;
Sin embargo la parte inferior y la derecha tienen -
frente a ellos ... ¿Por qué es esto? como los números son correctos, NO deben ser menos.
Puede utilizar .position () para esto
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();
fuente
windows.width()
y similares para otros cálculos.Yo creo que
<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>
El resultado son
top: 44 bottom: 544 left: 72 right: 1277 bottomFromBottom: 3068 rightFromRight: 3731
en el navegador Chrome mío.
Cuando el documento se puede desplazar,
$(window).height()
devuelve la altura de la ventana del navegador, no el ancho del documento del cual algunas partes están ocultas en el desplazamiento. Consulte http://api.jquery.com/height/ .fuente
Aquí hay una función jquery que devuelve un objeto de cualquier clase o id en la página
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'));
fuente
Respuesta de Javascript de vainilla
var c = document.getElementById("myElement").getBoundingClientRect(); var bot = c.bottom; var rgt = c.right;
Para que quede claro, el elemento puede ser cualquier cosa siempre que le haya asignado una identificación,
<img>
<div>
<p>
etc.por ejemplo
<img id='myElement' src='/img/logout.png' className='logoutImg img-button' alt='Logout' />
fuente