html,head,body의 차이

html태그, head태그 그리고 body에 대해 은근 정리가 안 된 것 같아서 게시글로 정리하려고 한다.

html

<html>은 HTML 문서의 루트(최상단 요소)를 나타내며 루트 요소라고 부른다. 모든 요소들은 <html> 요소의 후손이여야 한다.

하나의 <head> 요소와 하나의 <body> 요소를 가진다.

HTML <head> 요소는 기계가 식별할 수 있는 문서 정보(메타데이터)를 담는다. 정보로는 문서가 사용할 제목, 스크립트, 스타일 시트 등이 있다.

<body> 요소와는 다르게 페이지에 표시되지 않는다.

대신 브라우저나 웹페이지를 구성하는 metadata를 포함한다.

<link>는 항상 <head>에 위치해야한다.
페이지는 HTML과 CSS를 파싱하고 나서 렌더링을 시작하므로 항상 <head>에 위치하여 빠르게 로드되어야 한다.

또한 렌더링 전에 초기화와 같은 가벼운 <script>의 경우 <head>에 넣기도 한다.

body

HTML <body> 요소는 HTML 문서의 내용을 나타낸다. 한 문서에 하나의 <body> 요소만 존재할 수 있다.

<script>는 css나 html을 조작할 수 있기 때문에 다운로드하고 실행하는 동안 DOM트리를 위한 파싱 작업을 멈춘다.(하지만 defer, async등의 속성을 사용하여 제어할 수 있다.)

또한 <script>는 무겁다.

때문에 <script>태그는 대부분의 경우 <body>태그의 맨 아래 넣는다.

느낀점

기초는 이렇지만 다크모드 깜빡임 현상을 해결하면서는 <body>의 내용을 렌더링 하기 전에 렌더링 블록 요소인 <script>를 미리 로드하고 body의 최상단에서 호출하였다.

다크모드 깜빡임 현상을 해결하며 <script><html>,<head>,<body>에 대해 더 깊게 이해하게 된 것 같다..!

ref

html mdn
head mdn
The head metadata in HTML
body mdn

왜 일반적으로 CSS태그를 …

댓글