float: left;
속성을 준 것이다. 두번째 박스가 첫번째 박스의 영역까지 포함하고 있는것으로 보인다!이러한 현상이 일어나는 이유는 ???
브라우저는 요소들을 화면에 어떻게 보여줄지 결정하는 방법에는 여러가지가 있지만, 대표적으로 3가지가 존재한다! normal flow, float, position!
대부분의 요소들, 블록요소와 인라인 요소들을 normal flow에 따라 레이아웃이 결정된다! 하지만 float, position(absolute, fixed)를 적용하게 되면 normal flow에서 벗어나게 된다! 그리고 normal flow에 속한 요소들은 normal flow에서 벗어난 float, position 속성이 적용된 요소들을 인식하지 못하게 되는 것이다!
해결 방법은 다시 BFC(Block Formatting Context)를 만들어 주는 것이다. BFC는 float 속성이 적용된 요소를 컨테이너가 다시 인식하도록 만들어준다!
부모요소에 overflow;
속성 추가 (hidden, scroll)
부모요소에 높이 값 직접 지정
clear
속성 사용
clear: both;
속성을 주게 된다면 내용2의 박스가 내용1의 박스를 인식하게 되고 블록요소이므로 아래로 다시 떨어지게 된다!clear-fix 방법
CSS의 ::after
가상요소로 해결한다! 부모 요소에 가상으로 마지막 child 요소를 덧붙여 부모요소가 자식요소들을 인식하게 하는 방법이다!
가상요소는 기본적으로 인라인속성을 지니고 있기 때문에 display block
을 사용해주도록 하자!
BFC를 만드는 여러가지 방법
https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Block_formatting_context