: after를 사용하여 부동 요소 지우기


106

나는 목록이 있고 Li는 float:left;. 이후 내용<ul> 은 올바르게 정렬되어야합니다. 따라서 다음을 만들 수 있습니다.

http://jsfiddle.net/8unU8/

나는 <div class="clear">: after와 같은 의사 선택기를 사용하여 제거 할 수 있다고 생각했습니다 .

그러나 예제는 작동하지 않습니다.

http://jsfiddle.net/EyNnk/

부동 요소를 지우려면 항상 별도의 div를 만들어야합니까?

답변:


261

다음과 같이 작성하십시오.

.wrapper:after {
    content: '';
    display: block;
    clear: both;
}

http://jsfiddle.net/EyNnk/1/ 확인하십시오.


이것이 방법입니다. 그러나 의미론에 대한 내 대답의 요점에 유의하십시오.
Alex

2
사소한 정보 : ::after이중 콜론을 사용하는 것이 가상 요소를 대상으로하는 권장 방법입니다.
Dennis98

11
이중 콜론 (: :) CSS3 구문을 지원하는 모든 브라우저는 (:) 구문 만 지원하지만 IE 8은 단일 콜론 만 지원하므로 지금은 최상의 브라우저 지원을 위해 단일 콜론 만 사용하는 것이 좋습니다. ::는 의사 콘텐츠와 의사 선택자를 구분하기 위해 들여 쓴 최신 형식입니다. IE 8 지원이 필요하지 않은 경우 이중 콜론을 자유롭게 사용하십시오. css-tricks.com/almanac/selectors/a/after-and-before
레트로 리프

왜 이것을 넣어야하나요 : "content : ''; display : block;" ? 인라인 래퍼를 원한다면 어떨까요?
Lucke

6

아니요, 다음과 같이하는 것으로 충분하지 않습니다.

<ul class="clearfix">
  <li>one</li>
  <li>two></li>
</ul>

그리고 다음 CSS :

ul li {float: left;}


.clearfix:after {
  content: ".";
  display: block;
  clear: both;
  visibility: hidden;
  line-height: 0;
  height: 0;
}

.clearfix {
  display: inline-block;
}

html[xmlns] .clearfix {
   display: block;
}

* html .clearfix {
   height: 1%;
}

5

이것도 작동합니다.

.clearfix:before,
.clearfix:after {
    content: "";
    display: table;
} 

.clearfix:after {
    clear: both;
}

/* IE 6 & 7 */
.clearfix {
    zoom: 1;
}

클래스 clearfix부모 요소에 제공 합니다.ul 요소)에 제공하십시오.

여기여기에 소스 .


1
디스플레이 : 테이블은 추가 간격을 추가 할 수 있습니다. 대신 display : block을 사용합니다.
The Cog

0

텍스트 'dasda'는 절대 태그 안에 있지 않을 것입니다. 그렇죠? 의미 적으로 유효한 HTML이 되려면 clear 클래스를 추가하십시오.

http://jsfiddle.net/EyNnk/2/


1
전혀 의미론이 아닙니다. 1) UL에 배경을 제공하고 싶다면 UL이 명확하지 않기 때문에 LI를 커버하지 않는 경우와 같이 자녀가 플로트가있는 경우 항상 부모 요소를 지 웁니다. 2) 질문이 있습니다. P 전에 별도의 DIV에서 수업. P에게만 주면 작동합니다
sandeep

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.