Posição absoluta do elemento
Olá. Fiz esta função para posicionar uma janelinha de ajuda para o preenchimento de um formulário. Ela calcula a posição absoluta de um elemento considerando os elementos parentes (que contém o elemento) e busca barras de rolagem.
O que tem de especial é que eu particularmente não achei uma solução tão completa. A função que eu usava antes estava "pulando" justamente uma div que tinha barra de rolagem, então a janela não acompanhava o input corretamente. Só testei no Safari, possivelmente haverá algum ajuste para ficar universal, mas não tive tempo de fazer isso ainda. Alguém se habilita?
var absolutePosition = function(obj){ // offsetParent ou parentElement, os dois!
var curleft = curtop = 0; // Vamos começar a contar distâncias
var objScrolls = obj.parentElement; // O outro objeto seguirá o caminho via parentElement
if (obj.offsetParent) {
do {
curleft += obj.offsetLeft;
curtop += obj.offsetTop;
} while (obj = obj.offsetParent);
var scrleft = scrtop = 0; // Vamos começar a contar scrolls
do {
scrleft += objScrolls.scrollLeft;
scrtop += objScrolls.scrollTop;
jGp.trace('Scroll top de '+objScrolls.getAttribute('id')+': '+objScrolls.scrollTop);
} while (objScrolls = objScrolls.parentElement);
return [curleft - scrleft, curtop - scrtop]; // Juntamos os dois
} else {
return [obj.offsetLeft,obj.offsetTop];
}
}Discussão (2)
Carregando comentários...