첫 번째 직계 자녀만을위한 CSS 선택기가 있습니까?


315

다음 HTML이 있습니다

<div class="section">
   <div>header</div>
   <div>
          contents
          <div>sub contents 1</div>              
          <div>sub contents 2</div>
   </div>
</div>

그리고 다음 스타일 :

DIV.section DIV:first-child 
{
  ...
}

내가 이해하지 못하는 이유 때문에 스타일이 "sub content 1" <div>"header"에 적용되고 <div> 있습니다.

스타일의 선택기는 "section"이라는 클래스가있는 div의 첫 번째 직접 하위에만 적용된다고 생각했습니다. 선택기를 변경하여 원하는 것을 얻을 수 있습니까?


답변:


519

당신이 문자 그대로 게시 한 것은 "섹션 div 안에 있고 부모의 첫 번째 자식 인 div를 찾으십시오"를 의미합니다. 하위에는 해당 설명과 일치하는 하나의 태그가 포함되어 있습니다.

메인 div의 두 자녀를 원하는지 여부는 확실하지 않습니다. 그렇다면 다음을 사용하십시오.

div.section > div

헤더 만 원하면 다음을 사용하십시오.

div.section > div:first-child

>변경 내용을 사용하여 설명을 다음과 같이 변경합니다. "섹션 div의 직계 자손 인 div를 찾으십시오".

IE6을 제외한 모든 주요 브라우저가이 방법을 지원합니다. IE6 지원이 미션 크리티컬 한 경우 자식 div에 클래스를 추가하고 대신 사용해야합니다. 그렇지 않으면 걱정할 가치가 없습니다.


8
:이 경우 첫 번째 자식이 필요하지 않습니다.
eozzy

3
OP가 규칙이 모든 하위 div에 적용되는 이유만큼 선택기에 대해 묻지 않는 것 같습니다.
Doug Neiner

내 해석은 그가 CSS 상속의 개념을 얻었고, 첫 번째 아이가> 영향을 줄 것이라고 생각했다. 다소 명확하지 않은 표현입니다.
Matchu

3
아, '직계 자손'선택자가 모든 문제를 해결할 때 기억할만큼 나이가 들었을 때의 기쁨은 IE에서 작동하지 않았기 때문에 사용할 수 없었습니다 . 그러면 불필요한 불쾌감이 많이 생길 것입니다.
aroth

그것은 firs의 첫 번째 자식에도 적용됩니다. 첫 번째 자녀에게만 변경 사항을 적용해야하는 경우 해당 자녀의 자녀에 대한 변경 사항을 취소해야합니다. 이와 같은 것 :div.section > div:first-child > div { /* Cancel Changes*/}
Mahdi J.Ansari

51

Google에서이 질문을 검색했습니다. 이것은 자식의 container유형에 관계없이 class가있는 요소의 첫 번째 자식을 반환합니다 .

.container > *:first-child
{
}

44

규칙이 상속되므로 CSS를 CSS (Cascading Style Sheets)라고합니다. 다음 선택기를 사용 합니다 부모의 단지 직접 아이를 선택,하지만 규칙이됩니다 상속 그에서 div의 어린이 divs:

div.section > div { color: red }

이제 그 div 그 자녀 모두 가 될 것입니다 red. 상속하지 않으려면 부모에 설정 한 내용을 취소해야합니다.

div.section > div { color: red }
div.section > div div { color: black }

이제 div직계 자녀 인 단 하나만 div.section빨갛게되지만 그 자녀들 divs은 여전히 ​​검은 색입니다.



6

사용하십시오 div.section > div.

더 좋은 방법 <h1>은 제목과 div.section h1CSS에 태그를 사용하여 이전 브라우저 (에 대해 모르는 >)를 지원 하고 마크 업을 의미 적으로 유지하는 것입니다.


좋은 생각, 불행히도 IE6도 지원해야하며 h1을 사용하는 경우 글꼴이 본문의 글꼴과 일치하도록 글꼴 크기를 설정해야합니다. 즉, 7 이하는 상속을 지원하지 않습니다. 아가!
Jeremy

또한 자식 div가 있고 h1에 자식 div를 넣으면 규칙이 위반됩니다. IE가 렌더링하더라도 다른 브라우저의 기능이 확실하지 않습니다
Jeremy

3

귀하의 경우 직접 첫 자녀를위한 CSS 선택기는 다음과 같습니다.

.section > :first-child

직접 선택기는>이고 첫 번째 자식 선택기는 : first-child

다른 사람들이 제안한 것처럼 : 앞에 별표가 필요하지 않습니다. 태그를 추가하여이 솔루션을 수정하여 DOM 검색 속도를 높일 수 있습니다.

div.section > :first-child
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.