choco5958
지마의 개발일기
choco5958
전체 방문자
오늘
어제
  • 전체보기 (46)
    • 개발 (34)
      • Java (0)
      • JavaScript (7)
      • Php (4)
      • Ios(Swift) (23)
    • 프론트엔드 (7)
      • Html (1)
      • Css (5)
    • 백엔드 (0)
      • Mysql (0)
      • Oracle (0)
      • MongoDB (0)
    • 서버 (2)
      • Linux (2)
    • 일상 (3)
      • 반려동물 (1)
      • 베이킹 (2)
      • 맛집 (0)

블로그 메뉴

  • 홈

공지사항

인기 글

태그

  • ios#swift#스위프트#애플#아이폰#고차함수
  • ios#swift#스위프트#애플#아이폰
  • php#500error
  • ios#swift#스위프트#아이폰#애플#타입캐스팅
  • ios#swift#스위프트#아이폰#애플#프로토콜
  • ios#swift#스위프트#클로저#애플#아이폰
  • ios#swift#스위프트#애플#아이폰#assert#guard
  • ios#swift#스위프트#프로퍼티#애플#아이폰
  • php#linux#soap#리눅스
  • ios#swift스위프트#애플#아이폰#클래스#구조체
  • ios#swift#스위프트#애플#아이폰#try-catch#오류처리
  • ios#swifth#스위프트#열거형#아이폰#애플
  • ios#swift#스위프트#아이폰#클래스#애플
  • ios#swift#스위프트#아이폰#애플#옵셔널체이닝
  • ios#swift#스위프트#조건문#아이폰#애플
  • ios#swift#스위프트#구조체#문법#애플#아이폰
  • 자바스크립트#javascript#js#개발#웹개발
  • ios#swift#스위프트#아이폰#애플#상속
  • swift#ios#스위프트#애플#아이폰#init#초기화구문
  • ios#swift#스위프트#아이폰#애플#함수

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
choco5958
프론트엔드

브라우저 웹페이지 렌더링

브라우저 웹페이지 렌더링
프론트엔드

브라우저 웹페이지 렌더링

2021. 12. 24. 10:16

🎯 HTML 페이지 렌더링 단계:

  1. DOM의 구성
  2. CSSOM 구축
  3. 렌더 트리의 구성
  4. 레이아웃 단계
  5. 페인팅 단계

🎯 DOM 구축

  • 브라우저 binary stream format는 기본적으로 응답 헤더가 있는 텍스트 파일인 의 서버로부터 HTML 문서를 받습니다 Content-Type = text/html; charset=UTF-8.
  • 브라우저는 HTML 문서를 읽을 때 HTML 요소를 만날 때마다 Node 라는 JS 객체를 생성합니다 . 결국 모든 html 요소는 Node 로 변환됩니다 .
  • 브라우저가 HTML 문서에서 노드를 만든 후에는 이러한 노드 개체의 "나무와 같은" 구조를 만들어야 합니다.

Document Object Model 은 웹 페이지를 효율적으로 렌더링하고 개발자가 다양한 목적을 위해 DOM 요소를 동적으로 조작할 수 있도록 공개적으로 노출하기 위해 브라우저에서 제공하는 고급 웹 API입니다.

🎯 CSSOM 구축

  • DOM을 구성한 후 브라우저는 모든 소스에서 CSS를 읽고 나무와 같은 구조인 CSSOM(CSS Object Model)을 구성합니다.
  • 이 트리의 각 노드에는 대상 DOM 요소에 복사될 CSS 스타일 정보가 포함되어 있습니다.
  • 대부분의 브라우저에는 사용자 에이전트 스타일시트 라고 하는 고유한 스타일시트가 함께 제공됩니다 . 웹 브라우저에서 사용하는 기본 스타일시트입니다. CSS가 적용되지 않은 경우 브라우저는 여전히 콘텐츠를 어떻게든 렌더링해야 하며 브라우저는 이를 위해 사용자 에이전트 스타일시트를 사용합니다.

🎯 렌더 트리 구성

  • DOM과 CSSOM은 함께 결합되어 페이지에 표시되어야 하는 노드를 포함하는 렌더 트리를 형성합니다.
  • DOM 트리의 루트에서 표시되는 각 노드가 탐색되고 해당 CSSOM 규칙이 적용됩니다. 마지막으로 콘텐츠와 스타일이 있는 가시적 노드를 포함하는 렌더 트리를 제공합니다 .
  • 이는 결국 화면에 인쇄될 내용에 대한 저수준 표현이며 픽셀 매트릭스의 영역(예: head, meta, link태그)을 보유하지 않는 노드는 포함하지 않습니다 .

위에서 알 수 있듯이 display: noneCSS 속성 을 포함하는 노드 는 렌더 트리의 일부가 아닙니다.

🎯 레이아웃 단계

  • 이 단계는 노드의 기하학을 계산 하는 기하학 단계 라고 할 수 있습니다 .
  • 레이아웃 단계에서 브라우저의 뷰포트에 해당하는 노드의 정확한 위치와 크기가 계산됩니다. 이러한 방식으로 정확한 위치와 크기를 알고 있는 상자 모델 이 생성됩니다. 이 프로세스는 레이아웃 또는 리플로우 라고도 합니다.

  • 레이아웃 단계에서 생성된 상자 모델:

🎯 페인팅 단계

  • 보이는 노드, 스타일 및 지오메트리를 알고 있듯이 이제 이 모든 정보는 렌더 트리에서 화면의 실제 픽셀로 노드를 렌더링하는 데 사용됩니다. 이 과정을 페인팅이라고 합니다. UI 백엔드 레이어를 사용합니다.

 

  • 🎯 HTML 페이지 렌더링 단계:
  • 🎯 DOM 구축
  • 🎯 CSSOM 구축
  • 🎯 렌더 트리 구성
  • 🎯 레이아웃 단계
  • 🎯 페인팅 단계
choco5958
choco5958
안녕하세요. 개발 및 일상 팁 들을 포스팅하는 블로그입니다.

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.