간단한 팝업 창 생성 jQuery (1)

링크를 클릭하면 팝업 창이 뜨는 jQuery 코드입니다. 상황에 따라 다양하게 응용이 가능할 것 같습니다. 여러 가지 코드를 테스트해봤는데, 이 코드가 심플하면서도 잘 실행되네요.

코드

<head>
<style>
a.selected {
background-color:#1F75CC;
color:white;
z-index:100;
}

.messagepop {
background-color:#FFFFFF;
border:1px solid #999999;
cursor:default;
display:none;
margin-top: 15px;
position:absolute;
text-align:left;
width:394px;
z-index:50;
padding: 25px 25px 20px;
}

label {
display: block;
margin-bottom: 3px;
padding-left: 15px;
text-indent: -15px;
}

.messagepop p, .messagepop.div {
border-bottom: 1px solid #EFEFEF;
margin: 8px 0;
padding-bottom: 8px;
}

</style>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script>
function deselect(e) {
$('.pop').slideFadeToggle(function() {
e.removeClass('selected');
});
}

$(function() {
$('#contact').on('click', function() {
if($(this).hasClass('selected')) {
deselect($(this));
} else {
$(this).addClass('selected');
$('.pop').slideFadeToggle();
}
return false;
});

$('.close').on('click', function() {
deselect($('#contact'));
return false;
});
});

$.fn.slideFadeToggle = function(easing, callback) {
return this.animate({ opacity: 'toggle', height: 'toggle' }, 'fast', easing, callback);
};

</script>
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr">
</head>
<body>

<div class="messagepop pop">
<form method="post" id="new_message" action="/messages">
<p><label for="이메일">이메일 또는 이름</label><input type="text" size="30" name="email" id="email" /></p>
<p><label for="body">메시지</label><textarea rows="6" name="body" id="body" cols="35"></textarea></p>
<p><input type="submit" value="메세지 보내기" name="commit" id="message_submit"/> 또는 <a class="close" href="/">취소</a></p>
</form>
</div>

<a href="/contact" id="contact">연락하기</a>

</body>

링크를 클릭하면 다음과 같은 양식이 팝업 창으로 실행되고, "취소"를 누르면 창이 사라집니다.
Simple jQuery Popup

(Source: stackoverflow.com)

일부 글에 제휴 링크가 포함될 수 있으며 파트너스 활동으로 일정액의 수수료를 받을 수 있습니다.

3개 댓글

  1. 이걸 워드프레스에서는 어떻게 적용시켜야 하나요? 특정 페이지의 특정 문구를 클릭하면 저 팝업창을 뜨게 하고 싶은데요

댓글 남기기

* 이메일 정보는 공개되지 않습니다.