/* 모달 */ $(window).bind('load scroll resize',function(){ winScroll = $(this).scrollTop(); }); function modal_open(modalName) { // 모달 열기 공통 modal = $(modalName); // 모달창 ID값으로 열기 //modal = $(this).attr('href'); // 모달창 ID값으로 열기 modalBody = $(modal).children('.modal_wrap'); // 실제 모달창 modalW = modalBody.width(); modalH = modalBody.height(); modalOverlay = $('.layer_pop_bg'); if ( modalH >= $(window).height() ) { // 모달창이 윈도우보다 큰 경우 modalBody.css({ 'top':'50px', 'margin-left':-modalW/2, 'margin-top':'auto' }); modalOverlay.height(modalH+100); modal.addClass('modalScroll'); $('body').addClass('winFix winOverflow'); // body에 스크롤바 $('#bodyWrap').addClass('modalFix').css('top',-winScroll); // 스크롤바 막고, 사이즈 고정 } else { modalBody.css({ 'top':'50%', 'margin-left':-modalW/2, 'margin-top':-modalH/2 }); // 모달창 크기 계산, 가운데 정렬 $('body').addClass('winFix'); // body에 스크롤바 $('#bodyWrap').addClass('modalFix').css('top',-winScroll); // 스크롤바 막고, 사이즈 고정 } $(modal).stop().fadeIn(150); } function modal_close() { // 모달 닫기 공통 winTop = Math.abs(parseInt($('#bodyWrap').css('top'))); // 모달 닫을 시 현재 스크롤 위치값 반환 modal.fadeOut(100); modal.removeClass('modalScroll'); $('body').removeClass('winFix winOverflow'); $('#bodyWrap').removeClass('modalFix').css('top',''); modalOverlay.height(''); $(window).scrollTop(winTop); winTop = 0; } $(function(){ $('a.modal_open').click(function(e){ // a 태그에 클래스를 주었을 때 모달 열기 e.preventDefault(); modalName = $(this).attr('href'); modal_open(modalName); }); $('.modal .btn_close, .layer_pop_bg').click(function(e){ // 모달 버튼 닫기 e.preventDefault(); modal_close(); false; }); $(this).keyup(function(e) { // 모달 ESC 닫기 if(e.keyCode == 27 && $('body').hasClass('winFix')) { modal_close() false; } }); });