CSS float 문제를 해결해 주는 .group
2017/05/28
참고:
css에서 float를 이용해 단락을 정렬하고 나면 float의 찌꺼기(?)를 정리해 줘야 하는데, 구식 관습으로는 그 유명한 clear: both;
가 있다.
이를테면 html에서 float 단락 끝에 아무 내용 없는 .fix 클래스 div를 넣는 것이다.
<div class="fix"></div>
.fix {
clear: both;
}
그러나 이것은 좋지 않은 관습이다. html 문서에는 '콘텐츠'가 들어가야 하고, 그 '표현'은 css가 맡아야 한다. 하지만 html에 내용 없는 div가 들어가게 된다. 이를 피하기 위해, 그 아래쪽 footer에 clear: both;를 넣을 수도 있다. 하지만 그러면 css를 모듈화 할 수 없다. 이 역시 좋지 않은 관습이다.
그래서 .group
이라는 클래스를 만들어 해당 단락 div에 함께 넣는다. 이 .group 클래스는 다음과 같이 구성되어 있다.
.group:before,
.group:after {
content: "";
display: table;
}
.group:after {
clear: both;
}
.group {
zoom: 1;
}
핵심은 .group: after
에 clear: both;
를 두는 것이다. 그리고 단락 앞뒤에 빈 콘텐츠("")를 두고, 그 display 속성을 table로 한다.
'zoom'이라는 속성은 사실 프로덕션에서는 쓰지 말라고 하는데, 아마 인터넷 익스플로러 때문에 쓴 것으로 보인다. zoom을 1로 설정하면 익스플로러 구 버전의 display 속성 버그를 해결할 수 있다.