ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 오브젝트의 위치 알아내기
    유용한 정보 2008. 1. 7. 11:09
    var top = getObjectTop(obj) - document.body.scrollTop;
    var left = getObjectLeft(obj) - document.body.scrollLeft;

    function getObjectTop(obj)
    {
        if(obj.offsetParent == document.body)
            return obj.offsetTop;
        else
            return obj.offsetTop + getObjectTop(obj.offsetParent);
    }

    function getObjectLeft(obj)
    {
        if(obj.offsetParent == document.body)
           return obj.offsetLeft;
       else
           return obj.offsetLeft + getObjectLeft(obj.offsetParent);
    }

    offsetParent 는 자신의 위치를 규정할 수 있는 부모이다.
    예를 들어, div 안에 div 가 있다면, 안쪽에 있는 div 는 바깥쪽의 div 의 절대위치 +바깥쪽 div 의 안쪽의 div 에 대한 상대위치가 된다.

    오브젝트의 offsetParent 가 body 라면 오브젝트의 위치를 직접 가져오면 되지만
    그렇지 않은 경우에는 offsetParent 의 위치에 상대적인 자신의 위치를 더해야 한다.

    만약 스크롤바가 있는 경우, 오브젝트의 위치가 절대위치가 아닌 화면에 보이는 상대위치를 필요로 한다면
    오브젝트의 절대위체에서 스크롤바로 이동한 만큼 보정을 해주어야 한다.

    참고로 문자열을 숫자로 바꿔주는 함수는 eval(), parseInt()가 있지만 차이점은 parseInt() 는 진수변환이 가능하다는 것이다. 되도록이면 parseInt() 함수를 써야겠다.


    반응형

    댓글

Designed by Tistory.