본문 바로가기
WEB/JavaScript

요소의 위치와 크기

by 노랑파랑 2016. 10. 16.
반응형




1. getBoundingClientRect();

* 엘리먼트의 크기를 반환한다. <style의 값>

* IE에서는 width의 값을 제공하지 않는다.

* 태그의 중첩 시에는 top이나 right 값을 통해 기준이 부모가 아닌 body라는 것을 알 수 있다.

이를 명시적으로 확인할 수 있는 방법은 offsetParent 속성을 호출하는 것이다. 

* 테두리를 제외한 엘리먼트의 크기를 알고 싶다면  ClientWidth, ClientHeight를 사용한다. 

* Viewport의 좌표를 사용한다. ( ※ 2번 참조 )


- 예제        ! F12 개발자 도구를 열어 콘솔창에서 결과를 확인한다.

<style>
			body{
				padding:0;
				margin:0;
			}
			#target{
				width:100px;
				height:100px;
				border:50px solid #1065e6;
				padding:50px;
				margin:50px;
			}
		</style>
	</head>
	<body>
		<div id="target">
			Coding
		</div>
		<script>
		var t = document.getElementById('target');
		console.log(t.getBoundingClientRect());
		</script>


- 결과




2. Viewport

* 문서의 내용 중 사용자에게 보여지는 부분을 의미한다. 이에따라 문서의 좌표 Viewport의 좌표가 있다.

* Viewport 좌표는 스크롤이 생기면 스크롤의 위치에 따라 요소의 위치가 달라진다.

* 스크롤의 정도를 알고 싶으면 window.pageYOffset 속성을 사용하면 알 수 있다. (※ 구버전 웹브라우저는 scrollTop 속성 이용 )


VIEWPORT에 대한 이미지 검색결과


- 사용 예

getBoundingClientRect의 top 속성과 window.pageYOffset의 값이 1초마다 출력

<style> body{ padding:0; margin:0; } div{ border:50px solid #1065e6; padding:50px; margin:50px; } #target{ width:100px; height:2000px; } </style> <div> <div id="target"> Coding </div> </div> <script> var t = document.getElementById('target'); setInterval(function(){ console.log('getBoundingClientRect : ', t.getBoundingClientRect().top, 'pageYOffset:', window.pageYOffset); }) </script>

 



3. 문서의 좌표

* Viewport의 좌표에 스크롤의 정도를 더하면 알 수 있다.

// 위 예제의 함수만 바꿔준다
setInterval(function(){
    console.log('getBoundingClientRect : ', t.getBoundingClientRect().top,
    'pageYOffset:', window.pageYOffset, 
   'document y:', t.getBoundingClientRect().top+window.pageYOffset);  //문서의 좌표
}, 1000)




4. 스크롤

* 스크롤을 제어한다

* scrollLeft와 scrollTo 프로퍼티를 이용한다.

 - 예제 ) 문서의 스크롤 값을 변경해보자.                >실행 화면 링크<

<style> body{ padding:0; margin:0; } div{ border:50px solid green; padding:50px; margin:50px; } #target{ width:100px; height:2000px; } </style> <input type="button" id="scrollBtn" value="scroll(0, 1500)" />    //스크롤 이동 버튼 <div> <div id="target"> Scroll </div> </div> <script> document.getElementById('scrollBtn').addEventListener('click', function(){    //스크롤 이동 버튼을 눌렀을 때 window.scrollTo(0, 1500);    //스크롤 이동 }) </script>




5. 스크린

* 크기는 모니터의 크기와 브라우저 Viewport의 크기가 있다.

* window.inner.*Viewport의 크기를 나타낸다.

* screen.*스크린의 크기를 나타낸다.

- 스크린의 크기를 알아내는 방법

<script>
console.log('window.innerWidth:', window.innerWidth, 'window.innerHeight:', window.innerHeight);
console.log('screen.width:', screen.width, 'screen.height:', screen.height);
</script>



반응형

'WEB > JavaScript' 카테고리의 다른 글

이벤트 : 등록방법  (0) 2016.10.16
이벤트  (0) 2016.10.16
Text 객체 : 조작 API  (0) 2016.10.16
Text 객체 : 값 API  (0) 2016.10.16
Text 객체  (0) 2016.10.16