2009-12-16 5 views
0

속성 세트를 사용하여 요소 스타일을 지정하는 것이 쉽습니다. E[attr].attr이 설정되지 않은 경우 CSS2로 스타일 지정

속성이 없으면 CSS2로 스타일을 지정하는 방법이 있습니까? E[!attr]? (JavaScript 솔루션은 옵션이 아닙니다.)

<div id="n"><a href="" class="abc">.</a><a href="" class="def">.</a></div> 

클래스 abcdef 그래서 모두 ID-ED 규칙에 대해 lowerer 우선 순위가 :

.abc {padding:1em;} 
.def {padding:2em;} 
#n a {padding:0;} 

HTML 코드는 다음과 같습니다

예를 들어, ID 규칙에 의해 다음 몇 가지 클래스 규칙이 a에는 패딩 0이 있습니다. 위의 규칙 순서를 변경할 수는 없지만 id-ed 규칙을 변경하여 자체 규칙을 추가 할 수 있습니다. 모든 클래스에 대해 #n a.abc과 같은 규칙을 작성하는 것을 피하고 싶습니다 (많은 항목이 있음). 대신 모든 클래스 ed을 그대로 유지하려면 #n a[!class]과 같은 것이 필요합니다.

답변

3

슬프게도 CSS2에는 없습니다. 당신이 할 수있는 최선은 선언 계단식하는 것입니다

E {color: red} 
E[attr] {color: blue} 

을하지만 선택기 속성 IE6을 준수하지 않는 경우에도이 정말에 의존 할 수 없습니다.

하지만 CSS3에는 아름다운 ": not"의사 선택 도구 (http://www.w3.org/TR/css3-selectors/#negation)가 있습니다.

수정

주셔서 감사합니다. 방법 :

.abc {padding:1em; !important} .def{padding:2em; !important} 

#n a{padding: 1em} 
+0

@graphicdivine 감사합니다. 사과, 나는 처음부터 분명히 표현하지 않았다. 업데이트 된 게시물을 확인하십시오. 위의 트릭은 훌륭하지만 내 경우에는 작동하지 않습니다. – Alex

+0

@graphicdivine 감사합니다. 이 것을 완전히 잊었습니다. 완벽하게 작동했습니다! – Alex

0

나는 이것이 CSS2에서 수행 될 수 있다고 생각하지 않습니다. CSS3에서는 "not" syntax을 사용합니다.

input:not([type="file"]) 
+0

@jvenema 감사합니다. 그러나 현재 CSS3를 사용할 수 없습니다. – Alex

관련 문제