2014. 9. 5. 15:00

html을 작성하다보면 자주 사용 하는 것 중에 하나가 'float'속성입니다.

그런데 'float'속성의 특징은 다른 레이아웃에 영향을 주지 않는 것이죠.

 

 

0. 테스트용 코드 작성

테스트용 html을 다음과 같이 작성합니다.

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<style>
.Parent
{
background-color:aqua;
}
.Child1
{
background-color:yellow;
width:300px;
height:300px;
}
.Child2
{
background-color:red;
width:200px;
height:200px;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<div>
<div style="background-color:gray">
aaaaaaaaaaaaaaa
</div>
</div>
<div class="Parent">
<div class="Child1">
bbbbbbbbbbbbbbb
</div>
<div class="Child2">
ccccccccccccccc
</div>
</div>
</form>
</body>
</html>

 

이 코드를 실행하면 다음과 같이 나옵니다.

 

 

1. 문제

이제 '.Child1'과 '.Child2'에  'float'을 추가해 봅시다.

.Child1
{
background-color:yellow;
width:300px;
height:300px;
float:left;
}
.Child2
{
background-color:red;
width:200px;
height:200px;
float:left;
}

 

이제 코드를 실행하면 다음과 같이 나옵니다.

 

'float'속성을 추가하자 부모의 색인 아쿠아색이 없어진 것을 알 수 있습니다.

이것은 'float'속성이 기본적으로 다른 레이아웃에 영향을 주지 않기 때문에 그렇습니다.

 

기존 코드의 '<div class="Parent">'의 닫는 태그 밑에 'div'를 추가한후 '.Parent'에 '마진-바텀(margin-bottom)'을 추가해 보면 어떤 문제인지 확실하게 보이죠.

 

이러다 보니 부모 'div'를 기준으로 무언가 작업을 하게 되면 자식 'div'의 크기가 반영되지 않아 레이아웃이 이상하게 됩니다.

 

 

2. 해결하기

이 문제를 해결하기 위한 간단한 방법은 부모 'div'에 'display:inline-block'를 추가하는 것입니다.

.Parent
{
background-color:aqua;
display:inline-block;
}

 

 

이렇게 추가만 하면 자식의 크기가 부모한테 반영됩니다.

 

다시 아쿠아(하늘)색이 보이이기 시작합니다!!

 

 

마무리

그런데 'display:inline-block'를 추가하면 레이아웃에 문제 생기는 곳이 있던 거 같은데....

잘 기억이 나지 않습니다 ㅋㅋㅋㅋㅋㅋㅋ

아마도 다른 태그랑 섞여서 그랬던 거 같기도 해서 잘 모르겠네요.

어찌 됐건 'float'을 사용할 때는 별일 없으면 'display:inline-block'를 미리 추가해두는게 나중을 위해서 좋긴 합니다.