본문 바로가기

javascript

window.open 중앙 정렬 및 오른쪽 정렬

안녕하세요

오늘은 window open 중앙정렬 및 오른쪽 정렬에 대해 알아보겠습니다.

 

일단 window open의 옵션

- channelmode=yes|no|1|0 : 전체화면으로이 열립니다. ( IE에서만 동작)

- directories=yes|no|1|0 : 사용 X

- fullscreen=yes|no|1|0 : 전체화면 모드( IE에서만 동작)

- height=pixels : 창의 높이 지정

- width=pixels : 창의 넓이 지정

- left=pixels : 창의 화면 왼쪽에서의 위치 지정( 음수 사용 불가 )

- top=pixels : 창의 화면 위쪽에서의 위치 지정( 음수 사용 불가 )

- location=yes|no|1|0 : 주소 표시줄 사용여부 지정( opera에서만 동작 )

- menubar=yes|no|1|0 : 메뉴바 사용여부 지정

- resizable=yes|no|1|0 :창의 리사이즈 가능 여부 지정( IE에서만 동작 )

- status=yes|no|1|0 : 상태바를 사용여부 지정

- titlebar=yes|no|1|0 : 타이틀바를 사용여부 지정

- toolbar=yes|no|1|0 : 툴바를 사용여부 지정( IE, Firefox에서 동작 )

 

옵션에서 볼수 있듯이 팝업 위치는 top과 left 기준입니다.

 

중앙정렬하기


function popupCenter(href, w, h) {
	var xPos = (document.body.offsetWidth/2) - (w/2); // 가운데 정렬
	xPos += window.screenLeft; // 듀얼 모니터일 때
	var yPos = (document.body.offsetHeight/2) - (h/2);

	window.open(href, "pop_name", "width="+w+", height="+h+", left="+xPos+", top="+yPos+", menubar=yes, status=yes, titlebar=yes, resizable=yes");
}

document.body.offsetWidth를 구해서 현재 열려있는 브라우저 body의 offsetWidth(패딩과 보더 포함)를 가지고 옵니다.

(여기서 screen.width를 사용하지 않는 이유듀얼 모니터에서는 screen.width가 주모니터의 width를 가지고 오기 때문에 서브 모니터에서 팝업을 열 경우 제대로 동작하지 않습니다.)

가지고온 offsetWidth에서 절반을 빼고 팝업의 넓이의 절반을 빼주면 가로 중앙 정렬은 완성이 되는데요

여기서 주의하셔야 할 점은 듀얼 모니터일 경우에는

window.screenLeft를 더해주셔야 제대로 동작합니다.

세로 중앙 정렬은 가로 정렬과 동일하게 작성해 주시면 됩니다.( screenLeft는 제외 )

 

오른쪽 정렬하기


function popupCenter(href, w, h) {
    xPos = (document.body.offsetWidth) - w; 오른쪽 정렬
    xPos += window.screenLeft; // 듀얼 모니터일 때
    var yPos = (document.body.offsetHeight/2) - (h/2);

	window.open(href, "pop_name", "width="+w+", height="+h+", left="+xPos+", top="+yPos+", menubar=yes, status=yes, titlebar=yes, resizable=yes");
}

오른쪽 정렬은 가로 코드만 수정해 주시면 됩니다.

document.body.offsetWidth에서 팝업의 width를 빼주시게되면 오른쪽에 딱 붙게 됩니다.

 

감사합니다.