2012-05-16 6 views
1

왼쪽 요소를 떠 다니는 것이 더 낫습니다..clearfix class vs : after

일반적인 .clearfix 클래스 사용 :

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

당신이 재 사용 및 컨테이너 요소에 적용 할 수 있습니다 :

<div class="some-section clearfix"> 
    <div class="align-left"> left </div> 
    <div class="align-right"> right </div> 
    </div> 

    <div class="some-other-section clearfix"> 
    <div class="align-right"> right </div> 
    </div> 

또는 특정 청산 규칙과 같은 :

.some-section:after, some-other-section:after{ 
    content:"."; 
    display:block; 
    clear:both; 
    visibility:hidden; 
    line-height:0; 
    height:0; 
} 

?

+0

가능한 복제본 [clearfix의 가장 좋은 방법은 무엇입니까?] (http://stackoverflow.com/questions/211383/which-method-of-clearfix-is-best) –

+0

@WesleyMurch 아닙니다. OP는 적용 할 규칙이 아닌 규칙을 적용하는 방법을 묻습니다. – steveax

+0

@steveax : 아니요, OP가 어느 쪽이 더 "더 나은지"묻고 있습니다. "규칙을 적용하는 방법"은 이미 자신의 게시물에 있습니다. –

답변

1

:after을 사용하면 브라우저 간 문제로 간주해야합니다. 우리는 옛 사람을 포함한 모든 브라우저에 대한 지원을 제공하는 경우 의사 요소는 방법이 될 수 없습니다 :특정 클래스 대 제네릭 클래스에 관련

CSS selectors and pseudo selectors browser compatibility


정의 :

일반 클래스은 마크 업의 모든 요소에 적용 할 수 있으며 모든 요소가 지원하는 일반 서식 지정 지침과 함께 사용하거나 여러 요소 유형에 사용해야하는 서식 지정 지침에 가장 적합합니다.

특정 클래스은 마크 업의 특정 요소에만 적용함으로써 그 목적을 달성하기 때문에 한 유형의 요소에만 해당하는 서식 지정 명령어에 가장 적합합니다.특정 일에 걸쳐 일반 클래스를 사용하는

목표는 다음과 같습니다 다른

  1. 클리너 마크 업
  2. 재이용
  3. 작은 파일 (브라우저의 내용이 성능을 다운로드)
  4. 쉬운 사이유지 또는 업데이트하려면
+0

제네릭 클래스의 유일한 문제점은 마크 업에 몇 가지 제한을 부과한다는 것입니다. 예를 들어 마크 업에서 clearfix 클래스를 제거해야하는 것보다 일부 요소의 정렬을 변경하려는 경우 ... – Alex

+0

일반 클래스를 결합하여 해당 문제를 처리합니다! 예 : '

Foo bar
'는 브라우저에게'alignL'에 정의 된 것이'clearfix'에서 같은 선언보다 우선 순위가 높음을 알려줍니다! 따라서 제거 할 필요가 없습니다. 관련성을 기준으로 설정하십시오! – Zuul

1

필자가 개인적으로 선호하는 .clearfix는 브라우저 지원이 가장 많으므로 - IE6 & 7 지원하지 않습니다. 또한 한 곳에서 등록 정보 삭제를 정의하고이를 사용할 필요가있는 곳이면 어디서나 클래스를 추가 할 수 있습니다. 계속 사용하는 경우 : 요소 단위로 처리하면 많은 중복 CSS로 끝납니다.

+0

OP는 그것을 필요로하는 모든 요소에'clearfix' 클래스를 추가 할 것인지, 아니면 필요한 모든 클래스/id에 같은 스타일 규칙을 적용 할 것인지 묻습니다 - 어느 경우에도 적용된 스타일 규칙은 동일합니다. CSS 메타 언어 (Sass)를 사용하고'@include '를 사용하는 편이 좋기 때문에 html에 비 의미 론적 클래스를 뿌리지 않아도됩니다. 그리고 지우기 규칙은 오직 한 곳에 있습니다. – steveax

+0

@steveax, OP가 무엇을 알고 싶었는지 반복 해 주셔서 감사합니다. 내 경험에 따르면, 스타일이 1-2 줄이 아니라면 중복 된 코드와 비 대한 CSS 파일이 생깁니다. "비 의미 론적"클래스가 적절하고 유용 할 때가 있습니다. –

1

아니요. 인터넷 Explorer 7 및 이전 의사 요소를 지원하지 않는, 그래서 여기에 내가 무엇을 사용 :

.clearfix { 
    clear: both; 
} 

<br class="clearfix" /> 

그것은 거의 의미에도 IE 6에서 작동, 정말 멋지고 깨끗 .

+1

쓰레기 마크 업이나 유사 요소가없는 clearfix에 대한 다른 CSS 방법이 있습니다. http://stackoverflow.com/a/1633170/398242 * "정말 좋고 깨끗합니다"*? 그것에서 멀리! * "거의 의미 론적"* - 말이되지 않습니다! –

+1

IE6/7에는 clearfix가 필요없는 플로팅 요소에 대한 자동 삭제 버그가 있습니다. ': after'' 가상 클래스를'.clearfix'와 함께 사용하는 목적은 자동 클리어 (clear)되지 않는 브라우저만을 목표로 삼는 것입니다. – jaredhoyt

+0

@WesleyMurch : 정말 멋지고 깨끗합니다. * 링크 된 답변보다 훨씬 더 깔끔합니다. – Ryan