웹3

팝업구현(4) - 팝업창 2개 이상 만들기 (3.20)

멋쟁이토마토★ 2024. 3. 24. 13:08

vscode 팝업구현 폴더

pt-code.zip
0.03MB

 

코딩과정 : 코드펜 열기


 

[ popup-section(투명회색배경)을 클릭하면 팝업이 닫히도록 구현 ]

X버튼 뿐만아니라 popup-section을 클릭해도 팝업창이 닫히도록 만들기.

=> 단, click이벤트를 추가해서 작성하지 않는다.

 

button이라는 클릭대상(선택자) 옆에 콤마를 찍고 .popup-section을 넣어주면 간단하게 해결가능.

 


[ 제이쿼리와 함수 식에서 겹치는 코드 줄이기 ]

1. 겹치는 코드를 찾아 지운다.

 

2. 함수식을 선택해 ctrl+x 해서

3. click이벤트 옆 소괄호에 붙여넣기 해준다.

 

=> 길었던 식을 간단하게 줄일 수 있다.


 

[ 팝업창 2개 이상 구현하면 생기는 문제점 ]

 

1. 한번에 닫힌다.

ㄴ 2번을 해결함으로써 해결된다.

 

2. 한번에 열린다.

ㄴ 클래스를 각각 넘버링해 지정해주면 된다.

 

3. 배경이 중첩된다.

ㄴ 2번을 해결함으로써 해결된다.

 

4. popup-content를 클릭하면 팝업창이 닫힌다.

( 우리가 원하는건 X버튼 or popup-section을 눌러야만 닫히는 것 )

 return false로 해결하기 

     => .popup-content를 클릭했을 때 클릭되지 않도록 클릭이벤트를 취소하는 식 작성

 

5. popup-section옆에 스크롤이 생겨 보기 싫다.

 

6. 같은 코드가 계속 반복된다.

ㄴ 매개변수로 해결하면 된다.

 


[ 팝업창 2개 이상 만들기 ]

<html>

기존 .popup-section 식 전체를 복사해서 하나 더 만들어준다.

popup-section을 공통 class로 하여 넘버링을 해주고,

두번째 텍스트는 팝업 2번으로 수정해준다.

body-text에서 팝업 2번 창을 뜨게 할 텍스트를 하나 지정해서

첫번째 팝업창과 똑같이 span태그를 달아준다.

popup-open으로 공통 class를 달아주고 넘버링을 한다.

 

<css>

팝업창끼리 겹치지 않게 팝업창 2번의 margin값을 조정해 위치를 바꿔준다.

 

<js>

각 팝업 별 넘버링 해준 선택자로 click이벤트를 실행시켜야한다.

 


[ popup-content를 클릭하면 팝업창이 닫히는 거 해결하기 ]

popup-content를 클릭하면 popup-section과 body까지 선택이 되는데 body까지 선택되기 전에

popup-content에서 false를 반환함으로써 이벤트가 실행되지 않는다.

 

위의 식에서 겹치는 코드를 줄이면

이렇게 쓸 수 있다.


[ 같은 코드 줄이기 - 매개변수 ]

< 매개변수 >

함수명이 반드시 필요하다.
코드 순서대로 모두 실행되어지고, 긴 코드를 생략시켜준다.

 

위에서 줄여놓은 코드를 매개변수를 이용하면 더 짧게 생략이 가능하다.

넘버링을 바꿔가면서 식을 길게 늘어뜨리지않고,

매개변수를 이용해서 식을 간소화 해준다.