커스텀 팝업(얼럿)을 만들어 띄우는 기능을 간단하게 구현해보았다. 그냥 브라우저에서 기본적으로 제공하는 alert와 confirm을 사용하면 좋으련만, 팝업/모달 창과의 디자인적 통일성과 심미성 때문인지 별도로 디자인된 커스텀 alert/confirm을 사용할 것이 요청되는 곳이 많다. 구현한 코드를 응용하여 보다 복잡한 모달창을 만들 수도 있다.
해당 내용이 정리된 stackexchange 글
참고한 다른 글
명확히 기능과 특성을 구분해 지칭하기보다는 혼용해 쓰이는 경우가 많다. 나도 부모 창 위에 떠다니는 것은 다 퉁쳐서 팝업으로 부르는 경향이 있다.. 이 글에서도 팝업이라는 용어를 그러한 방식으로 사용하고 있다
확인이나 취소 버튼을 클릭하는 것으로 한정되어 있다확인버튼만 있는 것은 alert, 취소나 그와 유사한 버튼 또한 제공하는 것은 confirm으로 불린다. confirm을 alert의 하위 개념으로 취급하는 곳도 있고, 별개의 개념으로 설명하는 곳도 있었다. 본 예시에 등장하는 것은 엄밀히 말하면 confirm이다Popup
1. 띄울 팝업을 HTML로 만들고 팝업 내부 조작과 관련된 코드를 작성한 후 hidden 상태로 숨겨둔다
<!-- JSP의 예 -->
<jsp:include page="/WEB-INF/jsp/popup/popupExample.jsp />$("#btn-showPopup").on("click", () => { $("#confirmPopup").show(); })등의 코드를 작성해 직접적으로 숨겨진 팝업을 show했지만 현업에서는 보다 편하게 팝업을 노출 및 숨김 처리하고 안에 들어갈 콘텐츠를 설정할 수 있도록 퍼블리셔 등의 프론트 관계자들이 전용 함수를 작성해줄 수도 있다. 꼭 확인해보자.javascript
import $ from "https://esm.sh/jquery";
$("#btn-showPopup").on("click", () => {
$("#confirmPopup").show();
})
$("#btn-close").on("click", () => {
$("#confirmPopup").hide();
})
$("#btn-confirm").on("click", () => {
// "확인" 클릭 시 실행할 코드
document.body.style.backgroundColor = "gray";
$("#confirmPopup").hide();
})
HTML
<button type="button" id="btn-showPopup">show alert</button>
<div id="confirmPopup" class="popup-wrap" aria-modal="true" hidden>
<div class="popup-inner">
<div class="popup-header">
<h2 class="popup-title">저는 얼럿이예요!</h2>
</div>
<div class="popup-body">
<p>그렇습니다. 저는 얼럿입니다. <br>배경 색을 회색으로 변경하시겠습니까?</p>
</div>
<div class="popup-footer">
<div class="btn-area">
<button type="button" id="btn-close">취소</button>
<button type="button" id="btn-confirm">확인</button>
</div>
</div>
</div>
</div>
CSS
#confirmPopup {
border: 1px solid;
height: 200px;
width: 300px;
text-align: center;
padding-top:20px;
background-color: white;
}