javascript - posicionar - ¿Es posible obtener la posición de div dentro de la ventana del navegador? No dentro del documento. Dentro de la ventana
posicionar div css (6)
Pruebe el plugin jQuery de dimensiones . Vea esta demostración .
$(''#myelement.'').offset();
¿Es esto factible en IE7 o Firefox?
En IE y Firefox 3, puede usar getBoundingClientRect para esto; sin marco necesario.
Pero, sí, debería usar un marco si necesita soportar otros navegadores también.
Puedes restar offsetTop del div del document.body.scrollTop
Esto parece funcionar en IE7 y FF3, pero en una página muy simple. No he verificado con DIV anidados.
Usando Prototype sería:
$(''divname'').viewportOffset.top
$(''divname'').viewportOffset.left
Puede hacerlo en ambos: obtenga la posición relativa al documento, luego reste la posición de desplazamiento.
var e = document.getElementById(''xxx'');
var offset = {x:0,y:0};
while (e)
{
offset.x += e.offsetLeft;
offset.y += e.offsetTop;
e = e.offsetParent;
}
if (document.documentElement && (document.documentElement.scrollTop || document.documentElement.scrollLeft))
{
offset.x -= document.documentElement.scrollLeft;
offset.y -= document.documentElement.scrollTop;
}
else if (document.body && (document.body.scrollTop || document.body.scrollLeft))
{
offset.x -= document.body.scrollLeft;
offset.y -= document.body.scrollTop;
}
else if (window.pageXOffset || window.pageYOffset)
{
offset.x -= window.pageXOffset;
offset.y -= window.pageYOffset;
}
alert(offset.x + ''/n'' + offset.y);
[Pegado de la respuesta que di aquí ]
El getBoundingClientRect()
nativo getBoundingClientRect()
ha existido desde hace bastante tiempo y hace exactamente lo que la pregunta requiere. Además, es compatible con todos los navegadores (¡incluido el IE 5, parece!)
Desde esta página MDN:
El valor devuelto es un objeto TextRectangle, que contiene propiedades de solo lectura a la izquierda, arriba, derecha e inferior que describen el cuadro de borde, en píxeles, con la parte superior izquierda en relación con la parte superior izquierda de la ventana gráfica .
Lo usas así:
var viewportOffset = el.getBoundingClientRect();
// these are relative to the viewport, i.e. the window
var top = viewportOffset.top;
var left = viewportOffset.left;