outer div는 modal의 background layer다. 아래 fiddle에서 직접 확인할 수 있다. 스크롤를 어떻게 움직이든 악뮤는 가운데 고정이 된다. 아래처럼 레이어 팝업을 화면의 정 가운데 위치시키는 게 필요한 경우가 있다. HTML우선 이런 식으로 레이어를 준비한다. 보통은
다음은 레이어를 열게 할 버튼용 html 태그다. 역시
CSSCSS가 핵심이다. 설명은 아래에 있다.
아래 코드는 화면이 좁을 때 레이어 너비를 좀더 넓히는 CSS 코드다.
아래 코드는 처음에 레이어를 감춰 두기 위한 코드다.
자바스크립트
이게 전부다. 접근성스크린 리더 등 보조 기기 사용자들을 위해 팝업으로 초점을 옮겨 줘야 한다. 여기서 다룰 주제는 아니니 넘어간다. 해당 내용은 Using ARIA role=dialog to implement a modal dialog box 등을 참고하라. 데모데모 확인 데모는 jQuery 3을 사용하므로 구형 브라우저에서 돌아가지 않는다. 팝업 사이즈 고정
팝업 사이즈가 고정일 경우에는 position: absolute;로 요소를 띄워서 margin 으로 위치를 조절하는 방법을 사용합니다. IE7까지 대응할 경우에는 팝업 크기만큼 마이너스 마진으로 위치를 옮겨주고, IE8 이상 대응할 경우에는 margin: auto; 를 사용하여 보다 쉽게 중앙 정렬할 수 있습니다. margin: auto; margin의 top, left, right, bottom 모두 auto로 적용할 경우, margin: auto; 로 축약하여 사용할 수 있습니다. 하지만 경우에 따라 auto는 0으로 처리되기도 합니다.
팝업 사이즈 가변display:inline-block;이용
.popup_layer를 inline-block 요소로 만들어 .popup의 text-align: center로 가로 중앙 정렬을 합니다. 그리고 .popup 요소 안에 빈 요소 혹은 가상요소를 추가하여 .popup_layer와 vertical-align: middle; 로 세로 중앙정렬을 합니다. display:table;과 display:table-cell;이용
추가한 요소에 각각 display: table;과 display: table-cell;을 적용하고, .popup_layer를 inline-block 요소로 변경합니다. 그리고 그 부모인 .popup_inner에 vertical-align과 text-align를 적용해서 중앙 절렬을 합니다. |