Rev. 2.73

float 속성을 가진 컨테이너는 자식 요소의 높이를 무시하여 예상치 못한 결과를 출력하는 문제를 가지고 있습니다. 이 문제를 해결하기 위해 추가적인 요소에 clear 속성을 이용하는 방법이 있지만 overflow 속성을 이용한 해결 방법에 대하여 Web Designer Wall의 Nick La씨가 정리했습니다.

Curabitur venenatis vehicula mattis. Nunc eleifend consectetur odio sit amet viverra. Ut euismod ligula eu tellus interdum mattis ac eu nulla. Phasellus cursus, lacus quis convallis aliquet, dolor urna ullamcorper mi, eget dapibus velit est vitae nisi. Aliquam erat nulla, sodales at imperdiet vitae, convallis vel dui.

Nunc eleifend consectetur odio sit amet viverra. Phasellus cursus, lacus quis convallis aliquet, dolor urna ullamcorper mi, eget dapibus velit est vitae nisi. Aliquam erat nulla, sodales at imperdiet vitae, convallis vel dui. Ut euismod ligula eu tellus interdum mattis ac eu nulla.


위 예제처럼 float 속성을 가진 컨테이너 요소가 높이를 무시하는 문제입니다.

Curabitur venenatis vehicula mattis. Nunc eleifend consectetur odio sit amet viverra. Ut euismod ligula eu tellus interdum mattis ac eu nulla. Phasellus cursus, lacus quis convallis aliquet, dolor urna ullamcorper mi, eget dapibus velit est vitae nisi. Aliquam erat nulla, sodales at imperdiet vitae, convallis vel dui.

Nunc eleifend consectetur odio sit amet viverra. Phasellus cursus, lacus quis convallis aliquet, dolor urna ullamcorper mi, eget dapibus velit est vitae nisi. Aliquam erat nulla, sodales at imperdiet vitae, convallis vel dui. Ut euismod ligula eu tellus interdum mattis ac eu nulla.

<div style="clear:both"></div>

위 예제는 자식 요소의 마지막에 clear 속성을 가진 추가 요소를 사용한 것입니다. 이 밖에도 clearfix하는 방법을 이용하여 일반적으로 이 문제를 해결할 수 있었습니다.

Curabitur venenatis vehicula mattis. Nunc eleifend consectetur odio sit amet viverra. Ut euismod ligula eu tellus interdum mattis ac eu nulla. Phasellus cursus, lacus quis convallis aliquet, dolor urna ullamcorper mi, eget dapibus velit est vitae nisi. Aliquam erat nulla, sodales at imperdiet vitae, convallis vel dui.

Nunc eleifend consectetur odio sit amet viverra. Phasellus cursus, lacus quis convallis aliquet, dolor urna ullamcorper mi, eget dapibus velit est vitae nisi. Aliquam erat nulla, sodales at imperdiet vitae, convallis vel dui. Ut euismod ligula eu tellus interdum mattis ac eu nulla.

그러나 overflow 속성을 이용하여 이 문제를 해결할 수 있다는 사실을 알고 있었나요? 이것은 새로운 CSS 트릭이 아니라 오래전 부터 알려져 있던 것입니다. 위 데모는 overflow: auto를 지정함으로써 문제를 해결한 것입니다.

.container {
	overflow: auto;
}

그리고 overflow는 float 요소를 둘러싸는 효과를 제거하기 위해 사용할 수 있습니다. 여기에 overflow: hidden을 추가하면 아래와 같이 별다른 추가작업 없이 일렬로 배치할 수 있습니다.

overflow-auto-2.png

단, overflow를 이용한 float 클리어 트릭은 문제점을 가지고 있습니다. overflow: auto를 사용한 경우 자식 요소의 내용이 컨테이너의 폭을 넘어버리면 가로 스크롤이 표시되는 문제입니다. URL이나 줄 바꿈이 없는 긴 텍스트 또는 큰 그림 등을 배치할 때 아래와 같은 현상이 발생합니다.

drawbacks.png

이 문제는 ward-wrap 속성을 이용하여 해결할 수 있습니다.

.container {
	word-wrap: break-word;
}

큰 그림은 max-width 속성을 이용하여 해결할 수 있습니다.

.container img {
	max-width: 100%;
	height: auto;
}

drawbacks-solutiion.png

이같은 스타일시트를 추가하면 가로 스크롤 막대가 생기는 것을 방지할 수 있습니다.

Comments

Got something to add? You can just leave a comment.

Your Reaction Time!

captcha

avatar