본문 바로가기

IT/CSS

[CSS] clearfix


CSS
.pinkbox {width:324px;padding:5px;}
.redbox  {float:left;width:150px;height:60px;padding:5px;}
.bluebox {float:right;width:150px;height:130px;padding:5px;}

HTML
<div class="pinkbox">
    <div class="redbox">
         redbox
    </div>
    <div class="bluebox">
         bluebox
    </div>
</div>

위와 같은 코드가 있다고 하면, 실제로 웹 브라우저에서는 아래와 같이 보인다.

redbox
bluebox










(ie6에서는 감싸는 것처럼 보입니다.)

겉에 있는 핫핑크의 박스가 두 박스를 감싸지 못한다.


이것을 해결하려면 아래와 같은 방법이 있다.
1. redbox와 bluebox의 아래쪽에 div를 하나 더 만들어서 clear:both;를 넣어 주는 방법.
2. pinkbox에도 float:left;를 넣어 주는 방법
3. pinkbox에 height값을 넣은 눈속임

4. clearfix

1~3번은 사용이 간단하지만, 어느 것도 사용에 제약이 있다.
     1. div를 추가로 넣어야 해서 사용하기 어려운 경우가 있다.
     2. pinkbox 밖에서 다시 clear를 해 줘야 한다.
     3. 세로의 길이가 가변적이어야 할 때는 사용하지 못한다.

가장 제약이 없는 방법은, :after 를 사용한 4번이다.

CSS
<style type="text/css">
.clearfix:after  {content:".";display:block;height:0;clear:both;visibility:hidden;}
.clearfix   {display: inline-block;}
/* Hides from IE-mac \*/
* html .clearfix {height: 1%;}
.clearfix   {display: block;}
/* End hide from IE-mac */

HTML
<div class="clearfix pinkbox">
    <div class="redbox">
         redbox
    </div>
    <div class="bluebox">
         bluebox
    </div>
</div>

CSS가 조금 복잡해 보이지만, 외우지 못하는 사람들은 복사해 놓고 사용하자.

이제, 아래처럼 정상적으로 보인다. :)

redbox
bluebox

우리팀 진아가 책 보다가 발견한 코드.
이거 몰라서 삽질했던 기억이 있어서, 올려봅니다.  T ^T...

출처 : dstrictws.tistory.com

'IT > CSS' 카테고리의 다른 글

[CSS] 글 문단, 태그 재정의/Embeding, lnline, Class  (0) 2011.11.16
[CSS] HTML 링크에 밑줄 없애기  (0) 2011.10.19