use getBoundingClientRect() to get real offsets