Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 백준 node.js
- useRef 지역 변수
- react 프로젝트 리팩토링
- 모던 자바스크립트 TIL
- Vue3
- 프로그래머스 데브코스 프론트엔드
- TypeScript 문법 소개
- 프로그래머스 데브코스 프론트엔드 TIL
- KDT 프로그래머스 데브코스 프론트엔드
- 모던 javascript Deep Dive
- 프로그래머스 K_Digital Training
- react customHook 예시
- 우테캠 회고록
- 모던 자바스크립트 딥다이브
- 백준 js
- KDT 프로그래머스
- 개발자 특강
- 머쓱이
- 프로그래머스 데브코스
- useEffect return
- 모던 자바스크립트 Deep Dive TIL
- Frontend Roadmap
- frontend roadmap study
- 투포인터알고리즘 js
- 인프런 자바스크립트 알고리즘 문제풀이
- 모던 자바스크립트 Deep Dive
- Vue3 Router
- K_Digital Training
- 리팩토링 회고
- 프로그래머스 K_Digital Training 프론트엔드
Archives
- Today
- Total
프론트엔드 개발자의 기록 공간
[VanillaJS] 고양이 사진첩 만들기 본문
❗❗ 데브코스 29일차 (09.09)
오늘 다룰 주제는
"고양이 사진첩 만들기" 이다.
구현 요구사항
- 고양이 API를 통해 사진과 폴더를 렌더링 한다.
- 폴더를 클릭하면 내부 폴더의 사진과 폴더가 보여진다.
- 현재 위치한 폴더의 경로도 렌더링 해준다.
- 루트 경로를 제외한, 나머지 경로에서 뒤로가기 버튼 추가
- 이미지 클릭하면 모달창으로 이미지 보여줌
- esc를 누르거나 이미지 밖을 클릭하면 모달창 닫기
- API 로딩시 로딩 중임을 알리는 처리를 해준다.
✅ Modal 창 이벤트
예전에 과제테스트를 한번 경험삼아 본 적이 있었다. 요구 사항 중 하나가
이미지 클릭시 Modal 창으로 표현하고, 이미지 밖을 클릭하면 해당 모달창을 닫는 요구사항이었다.
그 당시에는 어떻게 구현해야할지 감이 안와서 그냥 지나쳤다. 하지만 이번 기회에 해당 이벤트 로직을 배울 수 있었다.
기본 로직은 다음과 같다.
- 이미지 클릭시, 이미지 컴포넌트에 state값 변경(클릭한 이미지의 url)
- state값이 변경됨에 따라 이미지 컴포넌트의 render가 실행된다.
- render에서는 state값의 여부에 따라 컴포넌트를 화면에 보여줄지 정한다. (style.display 옵션으로 "block" or "none")
- display값이 block로 표현되면서 화면에 보여진다.
- 모달창을 닫기 위해서는 이미지 영역밖에 클릭시(이미지 컴포넌트의 class 값으로 판별) state값을 초기화 한다. 그러면 2,3번의 과정에 따라 diplay값이 none으로 표현되면서 화면에서 사라진다.
이미지컴포넌트 태그.addEventListener("click", (e) => {
if (e.target.className === "지정한 img class태그이름") {
닫는 이벤트 처리
}
});
+ key event에 따른 이미지 닫는 처리
window.addEventListener("keyup", (e) => {
if (e.key === "Escape") {
닫는 이벤트 처리
}
});
📖 학습한 내용
- VanillaJS
- 고양이 사진첩 만들기
728x90
'프로그래머스 데브코스_FE > TIL' 카테고리의 다른 글
[VanillaJS] 고양이 사진첩 만들기_과제 (0) | 2021.09.14 |
---|---|
[VanillaJS] 고양이 사진첩 만들기(2) (0) | 2021.09.13 |
[프로그래머스 데브코스_FE] 프로젝트 배포 방법 (4) | 2021.09.09 |
[CSS] CSS심화_레이아웃 (0) | 2021.09.08 |
[VanillaJS] Notion Clone 프로젝트 (2) | 2021.09.03 |
Comments