반응형
수업 중 기억하고 싶은 내용
CSS
1. 상대위치 & 절대위치
- 절대위치: 좌상단, (0, 0)을 기준으로 하는 위치
- (0, 0)애서 고정되어 있기 때문에 전체에서 고정된다. 스크롤의 이동에 영향을 받지 않고 위치를 유지한다.
- position: absolute -> 부모 요소 중, position의 속성이 [relative, absolute, fixed, sticky]인 요소를 찾아 절대좌표의 기준으로 잡음. 부유 객체(다른 요소와 겹치지 않음)
- 상대위치: 현재 좌표를 기준으로 하는 위치
- position: relative -> 원래 있던 자리 기준으로 위치 조정
- position: fixed -> viewport 기준으로 위치 조정 (브라우저 창 기준 -> 위치가 변하지 않음)
- position: sticky -> 부모 요소의 좌표 기준으로 위치 조정
2. Overflow: 영역을 벗어난 부분을 표현하는 방법 (default: overflow-y)
- overflow[-y, -x]: scroll; -> x좌표는 가로 스크롤, y좌표는 세로 스크롤
- flex-shrink: 0; -> 가로 스크롤 시 자식 요소가 찌그러지는 일 방지, 지정된 크기 유지
- overflow: hidden -> 넘치는 부분 숨기기
3. position: sticky
- 웹 페이지나 특정 요소 스크롤 시 특정 위치에 고정되는 기능
- position: fixed와 차이점
sticky VS fixed | Sticky | Fixed |
고정 위치 | 스크롤 이동, 임계점 고정 | 항상 고정된 위치 |
기준 | 부모 요소 | 브라우저 창(스크롤 상관 없음) |
위치 | 항상 부모 요소 안에 존재 | 화면에서 위치 변화 없음 |
- backdrop-filter: blur(); -> filter: blur()와 다르게 sticky element 뒤의 배경만 흐리게 만든다. 뒤에 있는 요소가 보임. filter는 요소 자체를 흐리게 만듦.
Javascript
1. 스크롤 기능
- 윈도우 스크롤 (window.-)
- window.scrollTo({ top: 0 }): 지정된 위치(스크롤 맨 위)로 이동
- window.scrollTo({ top: 0, behavior: "smooth" }): behavior: "smooth" : 부드럽게 이동
- window.scrollBy({ top: -500 }): 현재 위치를 기준으로 이동 (지금 위치에서 위로 500 이동)
- 요소에서 사용하는 스크롤
- 요소.scrollTo({ top: 0 }): 요소의 스크롤바를 지정된 위치로 이동
- 요소 안에서만 동작, 전체 페이지와는 무관
- 스크롤하려고 하는 요소는 overflow 사용해서 스크롤 가능하도록 설정 필요
- 스크롤 감지 (EventListener 사용)
- 이벤트 리스너: 사용자의 이벤트를 감지하고, 그에 대한 반응을 정의
- addEventListener("이벤트 종류", 기능(함수));
- removeEventListener("이벤트 종류", 기능(함수)); -> 선언한 add문과 완전히 동일하게 입력해야함.
- window.scrollY: 수직으로 얼마나 스크롤했는지를 픽셀 단위로 반환
- 요소.scrollTop: 선택한 요소의 수직 스크롤 위치를 픽셀 단위로 반환
2. 주소창
- URI(Uniform Resource Identifier)
- 웹에서 자원을 식별하는 문자열의 집합 : URL + URN
- URL(Uniform Resource Locator)
- 웹 주소, 자원의 위치를 지정
- URN(Uniform Resource Name)
- 자원의 이름 지정, 자원의 위치와 무관 자원을 고유하게 식별하는 데 사용
- 앵커(Anchor, Fragment)
- 브라우저에게 특정 HTM 요소로 스크롤하도록 지시
3. 이벤트 버블링
- 이벤트 버블링: 하위 요소의 이벤트가 상위 요소에도 영향을 미치는 현상
- 원인 1. 함수가 있는 곳이 전체를 감싸는 곳인 경우 -> 해결 1. event.target.id 말고 event.currentTarget.id 사용
- preventDefault: 이벤트가 기본적으로 수행하는 동작 막음(링크 클릭 시 페이지 이동, 폼 제출 시 페이지 리로드 등)
- 기존에 있는 함수로는 preventDefault만 사용해도 괜찮지만, 내가 만든 함수는 stopPropagation을 사용해야 함.
- stopPropagation: 이벤트가 상위 요소로 전파되는 동작 막음
- 이벤트 리스너 추가 & 삭제
- 이벤트 리스너 추가: addEventListener("이벤트 종류", 기능(함수));
- 이벤트 리스너 삭제: removeEventListener("이벤트 종류", 기능(함수)); -> 선언한 add문과 완전히 동일하게 입력해야 함.
4. 이벤트 캡처링
- 이벤트 캡처링: 이벤트 버블링의 반대 개념, 클릭 시 부모에서 자식으로 가는 식의 이벤트 진행
- 기본 기능이 아니라 강제로 실행시켜줘야 함. : {capture: true}
- addEventListener("이벤트 종류", 기능(함수), {capture: true});
- removeEventListener("이벤트 종류", 기능(함수), {capture: true});
짧은 회고
스크롤 기능은 꽤 많이 만들어봤다고 생각했는데 차근차근 따라 만들어보니까 어떻게 만들어야 하는지 이해가 됐다. (그동안은 이해 못 하고 만드셨다는 거지~) 이벤트 버블링 부분은 중요하다고 하셨으니까 꼼꼼하게 복습해야겠다. 이벤트 버블링이라고 들었을 땐 뭔지 몰랐는데 코드로 보니까 다른 코드를 참고할 때 자주 보이던 코드여서 조금 반갑기도 했고, 제대로 모르고 사용한 게 한두 개가 아니라는 생각에 어지러웠다. 지금부터라도 잘 알면서 쓰면 되는 거지...
반응형
'💪 Study > 💻 Codecamp 13기' 카테고리의 다른 글
[241031] 메인캠프 Day44 - 1 (유틸리티 타입) (1) | 2024.10.31 |
---|---|
[240930] 메인캠프 Day23 (정적라우팅 & 동적라우팅) (5) | 2024.09.30 |
[240826] 프리캠프 1일차 TIL (0) | 2024.08.29 |