안녕하세요. float는 정말 자주 사용하는 속성입니다.
float를 태그요소에 적용하면 block 속성을 없애버리는 특성을 가졌습니다.
그리고 자신의 크기만큼만 공간을 차지하며 투명인간처럼 무시되게 되는 속성입니다.
이에 대한 자세한 설명은 제 블로그의 다음 글을
html css float 속성 정리 참고하시길 바랍니다.
아무튼 이런 성질로 인해 다음 요소들이 딸려서 위로 올라오게 됩니다. 보통 웹 페이지의 네비게이션 바의 메뉴를 float:left 로 많이 만들어서 잘못해서 아래 요소들이 딸려올라오는 문제을 자주 겪는 것 같습니다.
제 경우는 메뉴바 또는 기타 웹의 전체 구성 등을 만들 때 diplay: flex;를 사용해서 float를 자주 쓸일이 없습니다. 개인적으로 flex는 반응형 웹을 깔끔한 코드로 만들 수 있다고 생각합니다.
그럼에도 이 글을 쓰는 이유는 after라는 의사요소를 선택하는 선택자 때문입니다. after를 잘 사용하면 툴팁이나 기타 다양한 활용을 할 수 있습니다.
우선 float를 사용하여 문제가 발생하는 예제를 살펴보고 after로 해결하는 방법을 설명하고자 합니다.
float 문제 발생
nav 내부에 div 태그가 있고 모두 float: left 속성을 주었습니다. 결과는 다음과 같습니다.(img 속성은 block 속성이 아니어서 float을 적용하는 의미가 없기 때문에 div로 감싼 후 실험했습니다. 이미지를 버튼이라고 생각하면 편합니다. block에 대해 잘 모르시면 다음 글을 참고하세요
레이아웃 속성(display, inline, block)
float:left가 적용되었을 때
글들이 영향을 받아 위로 딸려올라갔습니다.
그럼버튼(그림)에 float 속성을 주지 않았을 때의 결과를 우선 살펴보고 해결해보도록 하죠.
float 속성이 없을 때
원래 글들은 버튼(이미지)과 다른 라인에 있어야 정상인데 이상합니다.
심지어 nav 내부에 있는 요소들에게 적용된 float 속성이 그 외부의 다음 요소까지 영향을 주고 있습니다. 이 때 우리는 영향을 받은 외부 요소에서
clear: left;