브라우저 엔진 : 유저 인터페이스와 렌더링 엔진 사이의 중개자로, 유저 인터페이스에서 받은 입력에 따라 렌더링 엔진을 쿼리하고 처리한다.
렌더링 엔진 : HTML/CSS를 파싱해서 사용자가 요청한 특정 웹 페이지를 화면에 렌더링하는 역할을 한다.
display: none
이거나 <head>
처럼 보이지 않는 요소는 포함되지 않는다. defer
로 표시하면 문서 파싱이 완료된 후 실행된다.async
로 표시하면 비동기로 실행된다.position(위치)
이나 geometries(기하학적 요소)
재계산visibility
변경, outline
변경, background
변경 등에 의해 발생한다.transform
또는 opacity
변경에 의해 발생한다.will-change
또는 translateZ
를 사용해서 요소를 자체 레이어로 승격할 수 있다.will-change
속성을 사용하면 해당 레이어는 GPU에 업로드된다.const bodyStyle = document.body.style; // cache
bodyStyle.padding = "20px"; // reflow, repaint
bodyStyle.border = "10px solid red"; // reflow, repaint
bodyStyle.color = "blue"; // repaint only, no dimensions changed
bstyle.backgroundColor = "#cc0000"; // repaint
bodyStyle.fontSize = "2em"; // reflow, repaint
// new DOM element - reflow, repaint
document.body.appendChild(document.createTextNode('Hello!'));
https://csstriggers.com/ 에서 브라우저 엔진 별로 layout
/ paint
/ composite
를 발생시키는 css properties를 확인할 수 있다. Webkit - Safari, Blink - Chrome, Gecko - Firefox, EdgeHTML - 구Edge다.