Frontend/javaScript

절대 위치 구하기 (제이쿼리 사용하지 않고)

dddzr 2023. 6. 28. 11:30

제이쿼리를 사용하지 못 하는 상황에서 한 element의 왼상단에 아이콘을 띄우는 작업을 하려고 했다.

처음에 style.top 속성(offsetTop과 동일)을 사용했는데

 div안에 element가 있을 경우에 위치에 오류가 있었다.

icon.style.position = 'absolute';
icon.style.top = element.style.top.replace('px', '') - 27 + 'px';
icon.style.left = element.style.left;

 

제이쿼리를 사용할 때

let top = $(element).offset().top
let lfet = $(element).offset().left

 

제이쿼리를 사용하지 않고 직접 계산

    function getElementAbsoluteTop(element) {
      let top = element.offsetTop;
      let parent = element.offsetParent;
      
      while (parent !== null) {
        top += parent.offsetTop;
        parent = parent.offsetParent;
      }
      
      return top;
    }
    
    function getElementAbsoluteLeft(element) {
      let left = element.offsetLeft;
      let parent = element.offsetParent;
      
      while (parent !== null) {
        left += parent.offsetLeft;
        parent = parent.offsetParent;
      }
      
      return left;
    }