Foros del Web » Programando para Internet » Javascript »

saber la posición de un elemento

Estas en el tema de saber la posición de un elemento en el foro de Javascript en Foros del Web. hola, tengo alrededor de 120 divs, y quisiera saber la posición de cada div para poder mostrar una capa centrada justamente debajo de ese div ...
  #1 (permalink)  
Antiguo 11/06/2009, 14:36
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 11 meses
Puntos: 1012
saber la posición de un elemento

hola, tengo alrededor de 120 divs, y quisiera saber la posición de cada div para poder mostrar una capa centrada justamente debajo de ese div

Código html:
Ver original
  1. <div id="cont_<%=i%>" onclick="Abre_Capa(this.id);">Mostrar</div>

gracias
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #2 (permalink)  
Antiguo 11/06/2009, 14:58
Avatar de SetheR  
Fecha de Ingreso: enero-2009
Mensajes: 265
Antigüedad: 15 años, 4 meses
Puntos: 44
Respuesta: saber la posición de un elemento

Hola IsabelM:

Yo usaría las propiedades offsetLeft y offsetTop. Que se puede acceder a ellas desde un elementodel dom.
Ejemplo:

Código &quot:
Ver original
  1. document.getElementById("mielemento").offsetLeft;

Te devuelve en entero la posicion en pixeles de su amrgen izquierda. Ojo, respecto a su capa padre. Con left y top deberías ser capaz de posicionar una capa.

Un saludo
  #3 (permalink)  
Antiguo 12/06/2009, 07:15
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 11 meses
Puntos: 1012
Respuesta: saber la posición de un elemento

gracias SetheR, pero yo lo necesito con respecto a su posición en la ventana. mas o menos sería algo como esto, pero no logro que funciones

Código javascript:
Ver original
  1. function Abre_Capa(e,num) {
  2.  
  3.     var evento = e || window.event;
  4.     var coordenadaX = document.getElementById("cap_"+nun).evento.clientX;
  5.     var coordenadaY = document.getElementById("cap_"+nun).evento.clientY;
  6.     alert("Div en posición: " + coordenadaX + "," + coordenadaY);
  7. }
Código html:
Ver original
  1. <div id="cont_<%=i%>" onclick="Abre_Capa(e,this.id);">Mostrar</div>

gracias
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #4 (permalink)  
Antiguo 12/06/2009, 07:31
 
Fecha de Ingreso: julio-2008
Ubicación: Alcañiz-Teruel-España
Mensajes: 182
Antigüedad: 15 años, 10 meses
Puntos: 5
Respuesta: saber la posición de un elemento

Buenas IsaBelM

Creo que esta función te puede servir:

Código javascript:
Ver original
  1. function getAbsoluteElementPosition(element) {
  2.   if (typeof element == "string")
  3.     element = document.getElementById(element)
  4.    
  5.   if (!element) return { top:0,left:0 };
  6.  
  7.   var y = 0;
  8.   var x = 0;
  9.   while (element.offsetParent) {
  10.     x += element.offsetLeft;
  11.     y += element.offsetTop;
  12.     element = element.offsetParent;
  13.   }
  14.   return {top:y,left:x};
  15. }

La función acepta como parámetro o bien el ID de un elemento (una cadena), o bien el propio elemento como objeto. El valor de retorno es también un objeto con dos propiedades : top y left, que contienen la posición buscada.

Un ejemplo de uso podría ser el siguiente:

Código javascript:
Ver original
  1. function test(ID) {
  2.   var elemento = document.getElementById(ID);
  3.   var pos = getAbsoluteElementPosition(elemento)
  4.  
  5.   alert("top="+pos.top+" left="+pos.left)
  6. }
__________________
Si quieres puedes y si puedes debes. Imposible is nothing!!!
  #5 (permalink)  
Antiguo 14/06/2009, 14:10
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 11 meses
Puntos: 1012
Respuesta: saber la posición de un elemento

hola, gracias a ambos por responder. matak perfecto, justo lo que queria
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:18.