article과 section 구분느닷없이 나와도 괜찮다.
연관성 있는 문서의 구획을 나누고자 할 때
margin-collapsingcontainer 요소에 overflow: hidden;
: 부모 요소에 overflow: hidden을 주면 자식 요소가 부모 요소 범위 밖으로 나가지 못하게 된다. 부모의 밖으로 나가지 못한 자식요소는 부모 요소 안에서만 있게 된다.
container 요소에 display: inline-block;
: 이 때 inline-block을 사용하면 div.parent와 div.other사이에 간격이 생기는 것을 볼 수 있는데 이는 vertical-align때문이다. vertical-align: top같은 것으로 해결할 수 있다.
vertical-align이란 인라인 요소 안에서 인라인 요소들 끼리의 수직정렬을 맞춘다.container 요소에 border 주기
container 요소에 display: flow-root;
: flow-root는 모바일의 경우 ios(==safari) 13버전 부터 사용할 수 있다. (ios를 업데이트 하지 않으면, safari도 업데이트 되지 않는다.)

Position과 Transform부모의 position 속성이 static이 아닌 가장 가까운 부모를 기준으로 움직인다.
position: absolute는 요소의 display 속성이 block으로 바꾼다.
top, bottom, left, right없이 position: absolute만 주면 움직이지 않는다. 대신 요소가 제자리에서 뜬다. => 따라서 요소를 제자리에서 띄우고 싶을 때는 position: absolute를 쓴다.
요소를 움직이고 싶을 때는 transform: translate()가 더 효율적이다. position은 top, left, right, bottom까지 다 써야하기 때문이다.
인라인 요소를 transform을 사용해 움직이고 싶을 때는, display를 block으로 바꿔줘야한다. position을 absolute로 바꾸면 block요소가 되기 때문에 움직인다. (🔥그래서 trasnform: translate()은 position: absolute랑 같이 사용해야 작동한다고 생각하는 사람이 많다🔥)
transform은 reflow, repaint를 일으키지 않는다.
reflow: 레이아웃 변경 시 영향 받는 모든 노드의 수치를 다시 계산하여 렌더 트리를 재생성하는 작업
repaint: reflow 과정이 끝난 후 재생성된 렌더 트리를 다시 그리는 작업으로 수치와 상관없는 스타일 변경시에는 reflow 과정을 생략한 repaint 작업만 수행한다.
transform은 GPU를 사용한다. GPU를 사용하면 transform 속성을 이용하는 요소의 렌더링 속도가 빨라진다. (왜? cpu는 하는 일이 많아서 바쁨 / GPU는 그래픽카드의 중앙처리 장치로 그래픽적인 요소를 표현하는데에 특화되어있는 칩)