Так как разные браузеры - это визуализация границы, отступов, полей и т. д. по-разному. Я написал небольшую функцию для получения верхней и левой позиций определенного элемента в каждом корневом элементе, который вы хотите в точном измерении:
function getTop(root, offset) {
var rootRect = root.getBoundingClientRect();
var offsetRect = offset.getBoundingClientRect();
return offsetRect.top - rootRect.top;
}
Для получения левой позиции вы должны вернуться:
return offsetRect.left - rootRect.left;