

<div class="box_wrap">
<div class="box_parent">
<div class="box box1">box1</div>
<div class="box box2">box2</div>
</div>
</div>
.box_wrap {
width: 400px;
margin: 0 auto;
}
.box_parent {
height: 100px; /* 자식인 .box들의 높이값이 고정일경우 같은 높이값을 부여함. */
border: 3px dotted blue;
padding: 10px;
}
.box {
width: 100px;
height: 100px;
color: #fff;
text-align: center;
}
.box1 {
float: left;
background-color: green;
}
.box2 {
float: right;
background-color: pink;
}
자식 요소가 좌우로 플로팅 되었을 때 부모가 float 속성(none을 제외)을 가진다면 그 부모 요소는 자식 요소의 높이 값을 수렴하게 됨

이미지와 같이 부모가 float 속성을 이미 가지고 있을 시에는 자식의 float을 따로 해제해 주지 않아도 됨. 하지만 그 부모의 요소 또한 float의 영향을 받기 때문에 그 부모도 float이 해제한 상태가 됨
결론적으로 이 해제 방법은 이미 float이 되어 있는 부모 요소가 자식 요소들에게 float이 부여된다고 했을 때 따로 해제 방법을 사용할 필요가 없다는 것으로 인식을 하기 위한 방법의 소개
위의 여러 가지 상황처럼 자식 요소의 float을 해제하기 위해서 부모 요소에 의미 없는 float을 부여하는 방법을 사용하는 것은 좋지 않다는 것
여러 가지 해제 방법 중에 가장 간단한 방법

<div class="box_wrap">
<div class="box_parent">
<div class="box box1">box1</div>
<div class="box box2">box2</div>
</div>
</div>
.box_wrap {
width: 400px;
margin: 0 auto;
}
.box_parent {
overflow: hidden; /* 부모요소에게 overflow (visible 제외) 부여 */
border: 3px dotted blue;
padding: 10px;
}
.box {
width: 100px;
height: 100px;
color: #fff;
text-align: center;
}
.box1 {
float: left;
background-color: green;
}
.box2 {
float: right;
height: 100px;
background-color: pink;
}
인접 형제 요소의 clear를 부여하는 방법. clear 속성은 float의 흐름을 끊기 위한 float 해제 전용 속성이라고 보시면 됨.
설명에 앞서 clear 속성의 값을 잠깐 설명하자면 clear는 left, right, both, none 등의 속성값을 가지고 있음. 이는 각각 float의 left를 해제, right를 해제, 그리고 방향에 상관없이 좌우 모두일 때 해제, 그리고 해제를 하지 않을 때 사용.

이 그림을 보시게 되면 마크업의 순서로 보자면 자식 요소가 box1, box2, 빈 span의 순서로 되어 있음. box1,2는 좌우로 플롯팅이 되어 있는 상태이고 그와 인접해있는 형제 요소인 빈 태그에 clear:both 속성이 부여되었음.
clear 속성을 사용하기 위해서는 요소가 블록 레벨 요소여야 가능. 이미지의 예시처럼 만약 인접 태그가 span 일 경우에는 display: block 속성을 주어 해당 태그를 블록 레벨로 변경해줘야 함.
<div class="box_wrap">
<div class="box_parent">
<div class="box box1">box1</div>
<div class="box box2">box2</div>
<div class="clear"></div>
</div>
</div>
.box_wrap {
width: 400px;
margin: 0 auto;
}
.box_parent {
border: 3px dotted blue;
padding: 10px;
}
.box {
width: 100px;
height: 100px;
color: #fff;
text-align: center;
}
.box1 {
float: left;
background-color: green;
}
.box2 {
float: right;
height: 100px;
background-color: pink;
}
.clear {
clear: both;
}

<div class="box_wrap">
<div class="box_parent">
<div class="box box1">box1</div>
<div class="box box2">box2</div>
</div>
</div>
.box_wrap {
width: 400px;
margin: 0 auto;
}
.box_parent {
border: 3px dotted blue;
padding: 10px;
}
.box {
width: 100px;
height: 100px;
color: #fff;
text-align: center;
}
.box1 {
float: left;
background-color: green;
}
.box2 {
float: right;
height: 100px;
background-color: pink;
}
.box_parent:after { /* :after를 이용하여 인접요소로 구성하여 해제 */
display: block;
clear: both;
content: '';
}
css를 코드를 보게 되면 부모 요소에 :after를 이용하여 자식 요소들 중에서 가장 마지막에 위치하도록 해주었음. 그 뒤에 블록 요소로 만들어주고 clear 해제를 해줌. 마지막으로 가상 요소는 content 요소가 필수이기 때문에 "" 이처럼 빈 내용을 주어 빈 태그를 넣어준 것과 같은 효과를 만들어줌.
이 해제 방법은 앞서 배운 overflow hidden을 사용하는 방법과 같이 팝업과 같은 콘텐츠를 벗어나는 경우에도 대응이 되며, 콘텐츠의 높이 값이나 사이즈의 변화에도 유연한 대응이 됨
지금까지의 해제 방법으로 보편적으로 가장 많이 사용하고 있는 해제 방법 중에 하나