인포메이트 7주차 공유(알고리즘)
인포메이트 7주차 공유(알고리즘) 모음입니다.
CSS 프로퍼티에 숨겨진 레이아웃 알고리즘 - 곽승주
Heap 메모리와 GC 알고리즘 - 윤해진
React reconciliation 알고리즘을 초간단하게 알아보자! - 김민재
재미와 이익을 위한 자바스크립트 전문화 - 김하나
CSS 프로퍼티에 숨겨진 레이아웃 알고리즘 - 곽승주
Intro
자주 사용했었던 CSS 코드가 예상치 못한 다른 결과를 낳은 적이 있었을 것입니다. 그 이유는 프로퍼티가 복잡한 시스템에서 작동하고, 프로퍼티의 작동 방식을 변경시키는 미묘한 컨텍스트가 있기 때문입니다. 이는 레이아웃 알고리즘
과 연관되어 있습니다.
레이아웃 알고리즘
레이아웃 알고리즘
이 뭘까요? 브라우저가 HTML을 렌더링할 때, 모든 요소는 기본 레이아웃 알고리즘을 사용하여 계산된 레이아웃을 갖습니다. 레이아웃 알고리즘에는 아래와 같은 것들이 포함됩니다.
- Flexbox
- Positioned
- Grid
- Table
- Flow
z-index
를 예로 설명드리겠습니다. z-index
는 보통 position
과 함께 중첩 순서를 제어하는 데 사용되며, 겹쳐졌을 때 어느 요소가 위에 표시될지 결정하는 속성입니다. 이를 position
없이 사용하면 당연히 제대로된 동작을 하지 않겠죠? 이는 레이아웃 알고리즘 중 Flow 레이아웃
을 사용했기 때문입니다. Flow 레이아웃
은 다른 레이아웃으로 특정짓지 않는 이상 default로 사용됩니다.

하지만, 위 예시를 보면 position
을 사용하지 않고, flex
를 사용하는 것으로도 z-index
가 동작하는 것을 확인할 수 있습니다. 이것은 레이아웃 알고리즘 중 Flexbox 알고리즘
이 z-index
를 구현하기 때문입니다. 이처럼 각 레이아웃 알고리즘에 어떠한 프로퍼티를 구현할 수 있게 정의할 수 있고, 또한 일반적인 기본 동작을 재정의할 수도 있습니다. width
로 그 예를 설명하겠습니다.

첫 div 태그
는 Flow 레이아웃을 사용하여 렌더링되며, 실제로 2000px