커스텀 팝업(얼럿)을 만들어 띄우는 기능을 간단하게 구현해보았다. 그냥 브라우저에서 기본적으로 제공하는 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;
}