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
- 자바스크립트
- 리액트
- 백준
- defee
- 시스템콜
- 큐
- 코드트리
- TiL
- 4기
- pintos
- Vue.js
- Flutter
- 사이드프로젝트
- 나만무
- 크래프톤정글
- 크래프톤 정글
- 핀토스
- Java
- 모션비트
- 티스토리챌린지
- corou
- 오블완
- 자바
- userprog
- JavaScript
- 스택
- HTML
- 소켓
- 알고리즘
- CSS
Archives
- Today
- Total
미새문지
24.06.20 day4 코드트리 조건문(중첩조건문까지) 학습, Reflow와 Repaint가 실행되는 시점 본문
728x90
조건문 and, or 혼합
a = int(input())
if (a % 2 == 1 and a % 3 == 0) or (a % 2 == 0 and a %5 == 0):
print("true")
else:
print("false")
연산자 처럼 괄호로 우선순위를 둘 수 있다.
프론트엔드 기술면접 질문 - 3
Reflow와 Repaint가 실행되는 시점
Reflow와 Repaint는 브라우저가 웹 페이지를 렌더링하는 과정에서 발생하는 중요한 작업이다.
Reflow(Layout)
- Reflow는 브라우저가 DOM(Document Object Model)의 요소들을 다시 계산해 화면에 배치하는 과정이다.
- 레이아웃 계산이라고도 하며 특정 이벤트가 작업이 발생하면 DOM트리의 각 요소에 대해 위치와 크기를 다시 계산한다.
- 발생하는 주요 시점
- DOM 변경 : 요소가 추가되거나 제거될 때,
- 요소의 스타일 변경 : 요소의 크기, 위치, 폰트 크기 등 레이아웃에 영향을 미치는 CSS 속성이 변경될 때
- 브라우저 창 크기 조정 : 사용자가 브라우저 창의 크기를 변경할 때
- 페이지 초기 렌더링 : 페이지가 처음 로드될 때
- 동적 컨텐츠 삽입 시 : 자바스크립트로 새로운 컨텐츠가 삽입될 때
- Reflow는 비용이 많이 들기 때문에 빈번하게 발생시키지 않게 최적화하는 것이 중요하며, 특히 DOM 변경 시에는 효율적으로 처리해야 한다.
Repaint(Redraw)
- Repaint는 요소의 시각적인 스타일이 변경될 때 발생하며, Reflow와 달리 레이아웃을 다시 계산하지 않고 변경된 스타일만 반영해 화면에 다시 그려준다. (구조는 그대로 유지하되 변경된 CSS 값만 적용)
- 발생하는 주요 시점
- 색상 변경 : 요소의 배경색이나 텍스트 색상 등이 변경될 때
- 가시성 변경 : display나 visibility같은 요소의 가시성이 변경될 때
- 스타일 변경 : box-shadow나 outline같은 레이아웃에 영향을 미치지 않는 다른 CSS 속성이 변경될 때
Reflow가 발생했을 땐 반드시 Repaint가 발생하지만, 반대로 Repaint가 발생했을 땐 항상 Reflow가 발생하는 것은 아니다.
화면의 구조가 변경되면 그에 따른 CSS값도 같이 바뀌어야 하지만 CSS만 변경했을 땐 레이아웃은 그대로 유지되는 경우가 많기 때문이다.
이러한 렌더링을 최적화하기 위해서는
- 여러 스타일 변경을 한 번에 적용할 수 있게 CSS 클래스를 활용한다.
- 여러 DOM 변경을 한 번에 적용하여 각 변경에 대해 렌더링이 발생하는 것을 방지한다.
- "display: none" 상태인 화면에 보이지 않는 요소로 변경 후에 조작하여 완료되면 다시 표시하는 방식으로 작성한다.( "display: none" 은 해당 요소와 하위 요소에 대한 Reflow를 중단한다.)
728x90
'개발 TIL' 카테고리의 다른 글
24.06.22 day6 코드트리 반복문(break문까지) 학습, REST API란? (0) | 2024.06.22 |
---|---|
24.06.21 day5 코드트리 반복문(반복문 안의 if까지) 학습, 클로저(Closure)란? (0) | 2024.06.21 |
24.06.19 day03 코드트리 연산자, 조건문(if else까지) 학습, 브라우저의 렌더링 원리 (0) | 2024.06.19 |
24.06.18 day02 코드트리 입출력 코드 학습, 호이스팅(Hoisting)이란? (2) | 2024.06.18 |
24.06.17 day01 코테 대비 코드트리 풀이 시작 (3) | 2024.06.17 |