Dialog은 아주 유용한 UI중 하나 입니다.
플러그인 사용방법은 간단하며, 사용자가 우선적으로 인지하기를 원하는 컨텐츠를 화면위에 노출 할 때 주로 사용합니다.
TODO
- image, guide, video 타입 개발 예정
Title Section
Content Section
Preview Dialog
HTML
Preview Dialog
Dialog를 동작시키기 위해서는 a태그에 class="pop-up" 을 추가하여야 합니다. (class는 Dialog설정에 따라 변경 가능)
내부에 담길 Content은 a태그의 href="" 속성의 주소를 ajax로 호출 후 응답을 받아서 노출 합니다.
팝업 제목
내용 입력합니다.
상단 HTML의 버튼 클릭시 dialog_example.html를 호출하는 예제 처럼,
ajax로 호출되는 뷰페이지의 기본 템플릿은 위와 같이 작성하면 됩니다.
CSS
.dialog-wrap { display: none; width: 100%; height: 100%; position: fixed; top: 0; left: 0; z-index: 20; } .dialog-overlay { width: 100%; height: 100%; position: inherit; top: 0; left: 0; background-color: #000; z-index: 21; opacity: 0.2; filter: alpha(opacity=20); } .dialog { min-width: 500px; position: fixed; _position: absolute; top: 50%; left: 50%; z-index: 22; background-color: #FFF; box-shadow: 0 0 6px rgba(0,0,0,0.33); font-size: 18px; border: 3px solid #999; border-radius: 6px; color: #474747; } .dialog-header { border-bottom: 1px solid #eee; background-color: #fefefe; border-radius: 3px 3px 0 0; } .dialog-close { width: 18px; height: 18px; position: absolute; top: 8px; right: 8px; font-size: 24px; font-weight: bold; font-family: "Helvetica Neue",Helvetica,Arial,sans-serif; text-align: center; text-decoration: none; line-height: 16px; color: #000; border: 0; cursor: pointer; background-color: transparent; opacity: 0.2; filter: alpha(opacity=20); z-index: 24; } .dialog-close:hover { opacity: 0.6; filter: alpha(opacity=60); } .dialog-header { margin: 0; padding: 9px; font-size: 16px; font-weight: bold; line-height: 1; } .dialog-body { padding: 10px; font-size: 12px; } .dialog-body p { width: auto; font-size: 1.1em; line-height: 18px; } .dialog-footer { padding: 5px; border-top: 1px solid #eee; background-color: #f6f6f6; text-align: right; border-radius: 0 0 3px 3px; }
Javascript
/** ======================================================= * RFC Dialog Plugin - 2012.06.25 * * @Author Park Jeong Shik (dodortus@gmail.com) * @Copyright © 2012 RSUPPORT. CO, LTD. All rights Reserved. * * @Required jQuery * ======================================================== */ ;(function($, win, doc){ var $dialogWrap = $('.dialog-wrap') , $dialog; $.fn.dialog = $.dialog = function() { this.click(function() { $.get(this.href, function(res) { (!$dialogWrap.length) && $.dialog.create(); $dialogWrap.show().find('.dialog-content').html(res); $.dialog.center(); }); return false; }); } $.dialog.create = function() { $dialogWrap = $([ '', '', '' ].join('\n')).appendTo('body'); } $.dialog.center = function() { $dialog = $dialogWrap.find('.dialog'); $dialog.css({ left: ($(win).width()- $dialog.width()) / 2 }); } $.dialog.close = function() { ($.browser.msie) ? $dialogWrap.hide() : $dialogWrap.fadeOut(100); } $('.dialog-wrap .close').live('click', function() { $.dialog.close(); }); $(win).resize(function() { if($dialogWrap.css('display') == 'block') { $.dialog.center(); } }); // ESC keydown dialog Close $(doc).keydown(function(e) { if($dialogWrap.css('display') == 'block') { (e.keyCode == 27) && $.dialog.close(); } }); // USE dialog $('.pop-up').dialog(); })(jQuery, this, document);', '', '', '', '
History
- Dialog 플러그인 제작[박정식 | 2012.06.25]
- 응답 결과 input요소 focus처리를 위한 Dialog 노출부 수정[박정식 | 2013.05.14]