2009-02-26 5 views
2

CSS 클래스 (< table class = "x">)가 정의되어 있고 <의 첫 번째 레벨의 'color'속성을 변경하고 싶다고 말하면 < 테이블이 있습니다.> , 해당 CSS를 사용하여 해당 < td>에 클래스를 설정하지 않고 가능합니까?CSS : 계단식 하나의 레벨

e.e.

<table class="x"> 
    <tr> 
     <td> 
      xxxx 
      <table><tr><td>yyy</td><tr></table> 
     </td> 
    </tr> 
<table> 

I 만 색상을 변경할 수있는 xxxx는 원하는 - 난 단지 대상 xxxx는 원할 경우 그렇게 .x td{color:red;} 현재 XXXX 및 YYYY에 적용됩니다, 오히려 XXXX TD 클래스 이름

+0

특정 브라우저를 염두에두고 있습니까? 서로 다른 브라우저가 크게 다른 기능 수준을 지원하므로 어떤 기능이 작동하고 어떤 효과가 없을지에 영향을 미칩니다. – cdeszaq

답변

8

두 번째 수준을 원하는 수준으로 설정하여 캐스케이드 효과를 무시하고 최상위 수준에서 효과를 취소 할 수 있습니다. 이 같은

뭔가 : (아무것도 그 이하 등)

table.x tr td { ...} 

table.x tr td table tr td { ... } 

첫 번째 문은 .x를 테이블 아래에있는 모든 TD 년대에 적용되지만, 다음 두 번째 문이 내부 중첩 수준이 우선합니다. 첫 번째 명령문 다음에 오는 것이므로 위 명령문에 설정된 모든 명령을 무시합니다.

이것은 또한 IE보다 잘 작동하지 않는 어린이보다는 조상/자손에 대한 기본 구성을 사용하기 때문에 IE에서 작동합니다.

+2

두 번째 규칙은 첫 번째 규칙보다 우선하므로 두 번째 규칙보다 우선하지만 두 번째 규칙은 더 구체적이기 때문에 우선합니다. 특이성 및 캐스케이드에 대한 자세한 내용은 CSS 사양을 확인하십시오. 또한, 이들 선택자는 각각'table.x td {...}'와'table.x table td {...}'로 단순화 될 수 있습니다. –

+0

@Ben 지정자를 단순화 할 수 있다는 점에 동의합니다. 요점을 더 잘 설명하기 위해 지정자를 전부 넣었습니다. 또한 CSS 사양에 따라 특수성이 적용되는 방식을 결정한다는 것이 나와 있지만 IE가 항상이를 따르는 것은 아닙니다. 내 경험에 의하면, 나중에 물건을 이기기가 더 쉽습니다. – cdeszaq

17

이 시도를주지 못할 것이다 :

table.x > tr > td { ... } 

>은 직접적인 자식 선택자입니다.

+0

당신은 새로운 것을 매일 배웁니다. 그것은 멋진 것 같습니다. –

+0

IE가 이것에 반응 할 것이라고 생각하지 않습니다 ... – Ishmael

+0

IE 7 이상을 지원합니다. –