일단 모달창이라는것을 오늘 처음 알았다.
모달창은 기존의 페이지 위에 새로운 윈도우창이 아닌 레이어를 까는것을 말한다.
모달창을 제거하지 않고도 페이지를 이동하면 자연히 사라진다.
기존의 페이지와 부모-자식 관계를 갖는다.
팝업창과 다른점은 팝업창은 현재 의도와 목적에 상관이 없는 반면,
모달창은 다음 스텝으로 넘어가기 위한 필요에 의해 사용되는 창이라고 볼 수 있다.
자 그럼 나는 1.어떠한 모달창을 2.무슨 방법을 사용하려 했으며 어떤 이유로 실패하고 3. 어떠한 고민과정을 통해 문제를 해결하였는지 기술하고자 한다.
이 의도를 아래와같은 Javascript code를 통해 구현하려 하였다.
const body = document.body;
function containerHandler(event) {
const zIndex = event.target.style.zIndex;
if(zIndex !== 990){
container의 display:none으로 바꿔주는 코드
}
}
body.addEventListner("click",containerHandler);
패착
const zIndex = event.target.style.zIndex;
이부분이다.
이부분이 나의 패착이다. javascript에서는 z-index를 받을 수 없다.
z-index 값이 있음에도 받을 수 없다.
코드로 구현하자면 아래와 같다.
const body = document.body;
function profileBoxDeleter(event) {
console.log(event.target.classList);
const isModal = event.target.classList;
console.log(isModal.value.indexOf("modal") === -1);
if(isModal.value.indexOf("modal") === -1){
event.target.className !== "profileBox" ? profileBox.className = "profileBox_hidden" : {}
}
}
body.addEventListener("click", profileBoxDeleter);
생각보다 간단했다.
container와 그안의 자식요소들에게는 모두 "modal" 이라는 클래스명을 부여하였고 그 이외의 요소들을 클릭하였을 때
"modal" 이라는 클래스명이 없으면 container를 지워주면 되는것이었다.
간혹 개발을 하다보면 기능상 요점이 아닌 문제 그자체에 몰두하곤 한다.
나무를 보지 말고 숲을 보는 습관을 가져보자.
/