2011-07-17 4 views
1

가능한 중복 :
Negative CSS selectors별도의 CSS 선택기

나는 내가

<div class="separate"> 
    <a href="#">a link</a> 
</div> 

그래서 때 사업부를 가지고, 내 페이지의 일부 CSS를 분리하는 싶습니다 내가 말하려는 것

.separate를 제외하고210 명
div{ 
    background:red; 
} 

모든 div의 난이 CSS3의 not 선택기를 사용하여 수행 할 수 있습니다

답변

1

iframe을하지 않고 할 수있는 방법이 필요 빨간색으로, 그리고 인터넷 익스플로러 (깜짝 놀랄)를 제외한 모든 브라우저 에서 작동합니다 :

div:not(#seperate){ 
    background:red; 
} 

여기에 설명 된 바와 같이 : http://kilianvalkhof.com/2008/css-xhtml/the-css3-not-selector/ IE에 관해서는

, 나는이 (할 수 있다고 생각하지 않습니다 g 당신이하지 않는 한 모든 div (별도의 경우 제외)에서이 작업을 수행하는 또 다른 클래스.

예를

<div class="origClass notSeperate"></div> 
<div class="seperate></div> 
<div class="origClass2 notSeperate"></div> 

를 들어

하지만 그 바보 :)

+0

사실 좋은 생각하지만 잘못된 선택은 : 당신은'.seperate'가 아닌'#를 작성해야 분리. – Tadeck

1

그냥 예를 들어

div{ 
     background:red; 
    } 

후 당신이 분리 원하는 스타일을 추가 만 할 수있다 :

.separate{ 
    background:blue; 
} 
+0

아주 지저분한 솔루션입니다. div 만 수정하면됩니다. '.separate' 대신에'div.separate'를 사용하지 않으시겠습니까? – Tadeck

+0

div에 분리 클래스가 설정된 경우'div.separate'는 쓸모가 없습니다. '.separate'는 CSS selector가 오른쪽에서 왼쪽으로 분석되기 때문에 충분합니다. 따라서 클라이언트는'.separate'를 모두 검색 한 후 모든 div를 다시 검색 한 다음 지정된 클래스가있는 항목 만 반환합니다. 그러면 CSS 파싱 시간이 줄어 듭니다. 모든 div의 첫 번째 스타일을 지정한 다음 예외를 스타일링하는 것은 CSS3까지 일반적인 관행이었습니다. CSS3는 여전히 브라우저에서 완전히 지원되지 않습니다. 이것은 @ Guffa의 대답에 설명되어 있습니다. – feeela

0

할 수 있습니다. 이 기준 : - see proof in jsfiddle

  1. div.separate div의 (덮어 쓰기되지 않습니다 그런 식으로)에 대해 서로 다른 배경 색상을 지정.
  2. div:not(.separate) 선택기를 사용하지만 CSS3 (see more) - see proof in jsfiddle을 지원하는 브라우저에서만 지원됩니다.
  3. 자바 스크립트 (예 : jQuery 프레임 워크)를 사용하고 CSS3 선택기 (모든 주요 브라우저에서 작동하는 방식)를 사용하여 설정 - see proof in jsfiddle.

하지만 해결책 번호는 없습니다. 1, 크로스 브라우저이며 자바 스크립트가 필요하지 않습니다.

0

에서 :

$j('.not(.separate)>div').css({background:'red'});

또는

당신은 이런 식으로 뭔가를

할 수 :

당신은 자바 스크립트의 도움 (jQuery로 예)와 함께 할 수 Negative CSS selectors

div { background: red; } 
.separate { background: white; } 

또는

빨간색으로 만들 div에 적절한 스타일 클래스를 추가 할 수 있습니다.

1

그런 다음, 모든 div의 배경을 설정 특정 클래스에 대한 어떤 배경을 재정의 할 수

div { background-color: red; } 
div.separate { background-color: transparent; }