2011-12-16 7 views
14

나는이 일을해야할까요? 첫 번째 자녀가 작동하지 않음

projects:first-child

.project.work:first-child:before { 
 
    content: 'Projects'; 
 
} 
 
.project.research:first-child:before { 
 
    content: 'Research'; 
 
}
<div class="project work"> 
 
    <p>abcdef</p> 
 
</div> 
 
<div class="project work"> 
 
    <p>abcdef</p> 
 
</div> 
 
<div class="project work"> 
 
    <p>abcdef</p> 
 
</div> 
 
<div class="project research"> 
 
    <p>abcdef</p> 
 
</div>
잘 작동, research:first-child 스틱하지 않습니다. 어떤 아이디어?

Demo 작동하지 않지만이를 수행하는 가장 좋은 방법은 무엇입니까? specification에서

+2

은': 첫 child'는 첫 번째 자식을 선택합니다. 다른 건 없어. – BoltClock

+0

.project.research : first-child 그 종류의 첫 번째 아닌가요? – uriah

+0

하지만 그것은 부모의 첫 번째 자녀가 아닙니다. – BoltClock

답변

14

:first-child은 부모의 첫 번째 자식 만 선택합니다. 다른 건 없어. 사이트 (1234) 내 다른 답변의 몇에서 언급 한 바와 같이

, 아니 :first-of-class 의사 클래스가 없다. div 요소의 각 클래스 중 첫 번째 클래스에 스타일을 적용하려는 경우 해당 클래스의 모든 하위 클래스에 스타일을 적용하고 일반 형제 선택 도구를 사용하여 후속 형제의 스타일을 취소합니다.

귀하의 CSS는 다음과 같을 것이다 :

.project.work:before { 
    content: 'Work'; 
} 

.project.research:before { 
    content: 'Research'; 
} 

.project.work ~ .project.work:before, 
.project.research ~ .project.research:before { 
    content: none; 
} 
+0

순수 CSS에서이를 동적으로 적용하는 방법은 없습니다 (나중에 추가하기로 결정한 경우 추가 클래스를 하드 코딩하지 않아도 됨). 더 많은 클래스를 추가 한 후에는이 패턴으로 수동으로 CSS에 추가해야합니다. – BoltClock

+0

완벽하고 모든 것에 적용하고 형제를 실행 취소하십시오. 고맙습니다. @boltclock 그래서'.project.photography'와 같은 다른 클래스를 추가하면 작동하지 않을까요? – uriah

+0

@uriah : 작동합니다. 수동으로 추가하면됩니다. – BoltClock

1

: :nth-child(1)

동일합니다. :first-child 가상 클래스는 다른 요소의 첫 번째 자식 요소를 나타냅니다.

.project.research은 부모의 첫 번째 자녀가 아닙니다.

0

난 당신이 CSS를 원하는 생각 :

.project.work p:first-child:before {content:'Projects';} 
.project.research p:first-child:before {content:'Research';} 

또는

.project.work > p:first-child:before {content:'Projects';} 
.project.research > p:first-child:before {content:'Research';} 
첫 번째 자식 클래스 "프로젝트"와 "업무와 요소의 일치

Updated fiddle

"(또는"프로젝트 "와"연구 "). p 요소가 아닌 경우 p:first-child을 사용할 필요가 없으며 대신 *:first-child을 사용할 수 있습니다.

+0

감사합니다. 나는 그 종류의 첫 번째 것을 선택하고 모든 요소가 아닌 CSS를 적용하기를 원할뿐입니다. 이것은 모두 선택합니다. – uriah

+0

@uriah : 아. 마크 업을 변경하지 않고도 그렇게 할 수 있다고 생각하지 않습니다. CSS3 셀렉터조차도 주어진 클래스 이름 쌍이있는 컨테이너의 첫 번째 요소를 선택하는 방법이 없다고 생각합니다. 'first-of-type'조차도 클래스와 관계없이 요소 유형에 적용됩니다. –

관련 문제