updated_at: 2024-12-14 16:55

element/window/document/mouseEvent 크기 & 위치

element의 위치/크기

  • 1).element.offsetWidth , element.offsetHeight (W3C권고안 아님) offsetWidth : element의 border, 수직/수평 padding, css width를 포함한 폭 화면을 봤을때 보여지는 엘리먼트의 폭

[관련URL] offsetWidth : https://developer.mozilla.org/en/DOM/element.offsetWidth [관련URL] offsetHeight : https://developer.mozilla.org/en/DOM/element.offsetHeight

  • 2).element.clientWidth (W3C 표준 아님) element의 border을 뺀 안쪽 폭

[관련URL] clientWidth : https://developer.mozilla.org/en/DOM/element.clientWidth [관련URL] clientHeight : https://developer.mozilla.org/en/DOM/element.clientHeight

  • 3). element.scrollWidth (W3C 권고안 아님) element의 스크롤 폭 (overflow:scroll인 경우 화면에 보이지 않는 영역까지 포함)

offsetParent / offsetWidth , offsetHeight / offsetLeft , offsetTop / scrollWidth , scrollHeight scrollLeft , scrollTop / clientLeft , clientTop / clientWidth , clientHeight / getBoundingClientRect();

**. document.body.scrollWidth , document.body.scrollHeight :: 전체 window에서 안보이는 스크롤 영역까지 계산하여 보여줌 , 단. 스크롤바 크기는 제외

  • 4). scrollLeft , scrollTop : 스크롤 된 x, y값 css가 overflow:hidden 으로 되어 있을때 scrollTop은 setter역할도 하여 위치값을 바꿀 수 있다.

  • 5). getBoundingClientRect() : document에서 element의 left, top, right, bottom, width, height 값

window 의 크기/위치

  • 1). innerWidth , innerHeight : 메뉴바,툴바,스크롤바 크기를 제외한 브라우져 window의 넓이/높이값
  • 2). outerWidth , outerHeight : 메뉴바,툴바,스크롤바 크기를 포함한 브라우져 window의 넓이/높이값
  • 3). pageXOffset , pageYOffset : 스크롤 된 x/y 값
  • 4). screenLeft , screenTop / screenX , screenY : 브라우져의 좌측 상단 모서리 x/y 좌표 값
  • 5). scrollTo( posx , posy ) : posx , posy 로 스크롤
  • 6). scrollBy( dx , dy ) : 현재 스크롤 값에서 dx , dy만큼 움직임

document의 크기/위치

  • 1). elementFromPoint( float x , float y) : x,y에 있는 element 알아내기 ** 마우스를 누를때 해당 엘리먼트 알아내는 방법은 마우스 이벤트를 통해 나온 값에서 clientX , clientY를 함수에 대입하면 된다. 이 return element를 가지고 1.element의 크기/위치를 참고하여 구하면 된다.

mouseEvent

  • 1). clientX , clientY :: container가 아닌 document의 가장 위쪽 지점에서부터의 마우스 포인터의 x,y위치값(스크롤은 무시)
  • 2). offsetX , offsetY :: 이벤트가 발생한 element내부의 마우스 포인터의 x,y값 ( local x,y 로 이해하면 됨 )
  • 3). pageX , pageY :: clientX , clientY와 같지만 스크롤시 스크롤까지 포함한 마우스 포인터의 x,y위치값

ex) 마우스 드래그

targetElement.addEventListener("mousedown" , onMouseDown );
window.addEventListener("mousemove" , onMouseMove , false );
window.addEventListener("mouseup" , onMouseUp , false );

** 마우스 드래그 시 첫 mousedown때 좌표잡는 법
function onMouseDown(e){
  var startX = e.clientX - e.target.getBoundingClientRect().left; 
}
// 마우스 이동시 
function onMouseMove(e){
  targetElement.style.left = e.clientX - startX + \"px\";
}
평점을 남겨주세요
평점 : 2.5
총 투표수 : 1

질문 및 답글