제작중인 디자인에 따라 아래의 각 수정 CSS 솔루션에는 고유 한 이점이 있습니다.
clearfix에는 유용한 응용 프로그램이 있지만 핵으로도 사용되었습니다. clearfix를 사용하기 전에 다음과 같은 최신 CSS 솔루션이 유용 할 수 있습니다.
최신 Clearfix 솔루션
컨테이너 overflow: auto;
부동 요소를 지우는 가장 간단한 방법 overflow: auto
은 포함 요소 에서 스타일 을 사용하는 것입니다 . 이 솔루션은 모든 최신 브라우저에서 작동합니다.
<div style="overflow: auto;">
<img
style="float: right;"
src="path/to/floated-element.png"
width="500"
height="500"
>
<p>Your content here…</p>
</div>
한 가지 단점은 외부 요소에 특정 여백과 패딩 조합을 사용하면 스크롤 막대가 나타날 수 있지만 여백과 패딩을 요소를 포함하는 다른 부모에 배치하면 해결할 수 있습니다.
'overflow : hidden'을 사용하는 것도 명확한 해결책이지만 스크롤 막대가 없지만를 사용 hidden
하면 포함 요소 외부에 위치한 내용이 잘립니다.
참고 :img
이 예제에서 floated 요소는 태그이지만 html 요소 일 수 있습니다.
클리어 픽스 재 장전
CSSMojo에 티에리 Koblentz 썼다 : 매우 최신 clearfix의 리로디드을 . 그는 oldIE에 대한 지원을 중단함으로써 하나의 CSS 문으로 솔루션을 단순화 할 수 있다고 언급했다. 또한 display: block
(대신 display: table
)를 사용하면 clearfix가있는 요소가 형제 인 경우 여백이 올바르게 축소됩니다.
.container::after {
content: "";
display: block;
clear: both;
}
이것은 가장 최신 버전의 clearfix입니다.
⋮
⋮
구형 Clearfix 솔루션
아래 솔루션은 최신 브라우저에는 필요하지 않지만 이전 브라우저를 대상으로하는 데 유용 할 수 있습니다.
이러한 솔루션은 브라우저 버그에 의존하므로 위의 솔루션 중 어느 것도 효과가없는 경우에만 사용해야합니다.
그것들은 대략 시간순으로 나열됩니다.
최신 브라우저를위한 수정 프로그램 인 "Beat That ClearFix"
의 티에리 Koblentz ' CSS 모조은 최신 브라우저를 대상으로 할 때, 우리는 이제 떨어질 수 있다는 지적 zoom
과 ::before
특성 / 값을 간단하게 사용
.container::after {
content: "";
display: table;
clear: both;
}
이 솔루션은 의도적으로 IE 6/7을 지원하지 않습니다!
Thierry는 또한 다음과 같은 기능을 제공합니다. " 주의 사항 : 새로운 프로젝트를 처음부터 시작하는 경우 계속 진행하십시오.하지만 기존 IE를 지원하지 않더라도이 기술을 현재의 기술과 바꾸지 마십시오. 무너지는 마진. "
마이크로 클리어 픽스
가장 최근에 그리고 세계적으로 채택 된 clearfix 솔루션 인 Nicolas Gallagher 의 Micro Clearfix .
알려진 지원 : Firefox 3.5 이상, Safari 4 이상, Chrome, Opera 9 이상, IE 6 이상
.container::before, .container::after {
content: "";
display: table;
}
.container::after {
clear: both;
}
.container {
zoom: 1;
}
오버 플로우 속성
이 기본 방법은 배치 된 컨텐츠가 컨테이너의 경계 외부에 표시되지 않는 일반적인 경우에 선호됩니다.
http://www.quirksmode.org/css/clearing.html은
- 설정, 즉이 기술과 관련된 일반적인 문제 해결 방법에 대해 설명 width: 100%
컨테이너에 있습니다.
.container {
overflow: hidden;
display: inline-block;
display: block;
}
display
속성을 사용하여 IE에 대해 "hasLayout"을 설정하는 대신 요소에 대해 "hasLayout"을 트리거 하는 데 다른 속성을 사용할 수 있습니다 .
.container {
overflow: hidden;
zoom: 1;
display: block;
}
overflow
속성을 사용 하여 수레를 지우는 또 다른 방법 은 밑줄 핵 을 사용하는 것 입니다. IE는 밑줄이 붙은 값을 밑줄로 적용하지만 다른 브라우저는 적용하지 않습니다. 이 zoom
속성 은 IE에서 hasLayout 을 트리거합니다 .
.container {
overflow: hidden;
_overflow: visible; /* for IE */
_zoom: 1; /* for IE */
}
이것이 작동하는 동안 ... 핵을 사용하는 것은 이상적이지 않습니다.
PIE : 손쉬운 청소 방법
이 오래된 "Easy Clearing"방법은 CSS가 더 까다로워 져 배치 된 요소가 컨테이너의 경계 외부에 매달리게하는 이점이 있습니다.
이 솔루션은 상당히 오래되었지만 위치에 관한 모든 정보를 쉽게 지울 수 있습니다. http://www.positioniseverything.net/easyclearing.html
"클리어"속성을 사용하는 요소
함께 무언가를 빠르게 때릴 때의 빠르고 더러운 솔루션 (약점 있음) :
<br style="clear: both" /> <!-- So dirty! -->
단점
- 반응 형이 아니므로 미디어 쿼리에 따라 레이아웃 스타일이 변경되는 경우 원하는 효과를 제공하지 않을 수 있습니다. 순수한 CSS의 솔루션이 더 이상적입니다.
- 의미 적 값을 추가하지 않고도 HTML 마크 업을 추가합니다.
- CSS의“clearfix”에 대한 단일 솔루션에 대한 클래스 참조가 아니라 각 인스턴스에 대한 인라인 정의 및 솔루션이 필요하며 HTML에서 클래스에 대한 참조가 필요합니다.
- 다른 사람들이 코드를 해결하기 위해 더 많은 핵을 작성해야 할 수도 있으므로 코드를 다루기가 어려워집니다.
- 나중에 다른 clearfix 솔루션을 사용해야 할 경우에는
<br style="clear: both" />
마크 업 주위에 흩어진 모든 태그를 다시 제거 할 필요가 없습니다 .