¿Cómo puedo encontrar las coordenadas XY de un elemento HTML (DIV) desde JavaScript si no se establecieron explícitamente?Buscar X/Y de un elemento HTML con JavaScript
Respuesta
Eso puede ser complicado según el navegador y la versión. Sugiero usar jQuery y el plugin de posiciones.
La mayor parte del plugin de posiciones ahora es parte del núcleo de jQuery. Así que puedes hacer $ (element) .offset ({relativeTo: "body"}) - y te dará la parte superior e izquierda del objeto relativo al cuerpo. – Sugendran
Excelente, no he descargado jQuery en unos pocos meses, es bueno saber que lo rodaron. – palehorse
+1 para jQuery offset – shan
No estoy seguro para qué lo necesita, y tales cosas son siempre relativas (pantalla, ventana, documento). Pero cuando tenía que darse cuenta de eso, me encontré con este sitio útil: http://www.mattkruse.com/javascript/anchorposition/source.html
Y también me encontré con que la persona plugin de información de herramienta hecha para jQuery tenía todo tipo de visión interesante ax, trucos y posicionamiento (se ven en su ventana clase y el soporte subyacente jQuery lo proporciona). http://bassistance.de/jquery-plugins/jquery-plugin-tooltip/
Se puede utilizar una biblioteca como prototipo o jQuery, o puede utilizar this handy function:
Devuelve una matriz.
myPos = findPos(document.getElementById('something'))
x = myPos[0]
y = myPos[1]
function findPos(obj) {
var curleft = curtop = 0;
if (obj.offsetParent) {
curleft = obj.offsetLeft
curtop = obj.offsetTop
while (obj = obj.offsetParent) {
curleft += obj.offsetLeft
curtop += obj.offsetTop
}
}
return [curleft,curtop];
}
Deberías atribuirle atribución a quirksmode.org, esa función es muy familiar. – pilsetnieks
Así es como lo hago:
// Based on: http://www.quirksmode.org/js/findpos.html
var getCumulativeOffset = function (obj) {
var left, top;
left = top = 0;
if (obj.offsetParent) {
do {
left += obj.offsetLeft;
top += obj.offsetTop;
} while (obj = obj.offsetParent);
}
return {
x : left,
y : top
};
};
Creo que prefiero tu idea de devolver un objeto por sobre la opción de Peter-Paul Koch de devolver una matriz en su solución original. – cssimsek
Por lo que vale la pena, he aquí una versión recursiva:
function findPos(element) {
if (element) {
var parentPos = findPos(element.offsetParent);
return [
parentPos.X + element.offsetLeft,
parentPos.Y + element.offsetTop
];
} else {
return [0,0];
}
}
parentPos.X debe ser parentPos [0], parentPos.Y debe ser parentPos [1] – Noah
Se pueden añadir dos propiedades a la Element.prototype
para obtener la parte superior/izquierda de cualquier elemento.
window.Object.defineProperty(Element.prototype, 'documentOffsetTop', {
get: function() { return this.offsetTop + (this.offsetParent ? this.offsetParent.documentOffsetTop : 0); }
});
window.Object.defineProperty(Element.prototype, 'documentOffsetLeft', {
get: function() { return this.offsetLeft + (this.offsetParent ? this.offsetParent.documentOffsetLeft : 0); }
});
He aquí una demostración comparando los resultados con jQuery de offset().top
y .left
: http://jsfiddle.net/ThinkingStiff/3G7EZ/
- 1. ¿Cómo cambio el ID de un elemento HTML con JavaScript?
- 2. código javascript para resaltar un elemento html
- 3. Agregar un elemento al DOM con JavaScript
- 4. Buscar elemento con índice Z especificado
- 5. jQuery - Buscar elemento con el atributo rel
- 6. ¿Cómo puedo registrar un elemento HTML como un objeto JavaScript?
- 7. Inserción de elementos HTML con JavaScript
- 8. ¿Puedo cambiar el ID de un elemento HTML utilizando Javascript?
- 9. JavaScript en iOS: abrir un elemento de selección HTML
- 10. Buscar un objeto JavaScript
- 11. obtener el elemento html dentro de otro elemento en javascript
- 12. html Identificación del elemento como variable javascript
- 13. SVG en HTML con un elemento de script
- 14. ¿Es posible reemplazar un botón asp: con un elemento HTML
- 15. Cómo obtener un elemento HTML de una cadena con jQuery
- 16. Buscar y reemplazar con JavaScript
- 17. Buscar matriz multidimensional JavaScript
- 18. Buscar HTML basado en el atributo parcial
- 19. ¿Cómo buscar un elemento en un vector?
- 20. Adición de elementos HTML con JavaScript
- 21. Html Agility Pack: Buscar Nodo de comentario
- 22. ¿Buscar en fuente html con GOOGLE?
- 23. Buscar y reemplazar en HTML con BeautifulSoup
- 24. Crear dinámicamente un formulario HTML con Javascript
- 25. CheckedListBox - Buscar un elemento por texto
- 26. seleccionar elemento de texto HTML con expresiones regulares?
- 27. elemento html cuales identificación comienza
- 28. ¿Cómo descargar un javascript de un html?
- 29. Buscar un elemento en una lista Lua
- 30. eliminación de estilos de elemento html a través de javascript
cerrado como duplicado según http://meta.stackexchange.com/questions/147643/should-i-vote-to- close-a-duplicate-question-even-though-its-much-newer-and-ha – user123444555621