첫 번째 것을 제외한 모든 'tr'을 선택하십시오.


257

CSS가있는 테이블 tr에서 첫 번째 요소를 제외한 모든 요소를 어떻게 선택할 수 tr있습니까?

방법을 사용해 보았지만 효과가 없다는 것을 알았습니다.


1
어떤 브라우저와 호환되어야합니까?
Pekka


@Pekka의 질문은 중요합니다. 여러 버전의 IE에서 작동하는 표준 CSS를 사용 하여이 작업을 수행 할 수있는 방법을 생각할 수 없기 때문입니다. IE를 지원해야하는 경우, 유일하게 실행 가능한 솔루션은 첫 번째 <tr>클래스와 나머지 클래스는 다른 클래스입니다.
Spudley

나는 IE에 대해 걱정하지 않지만 FF와 GC에서 작동합니다

답변:


466

첫 번째 tr또는 후속 클래스에 클래스를 추가합니다 tr. CSS만으로 원하는 행을 선택하는 크로스 브라우저 방법은 없습니다.

그러나 Internet Explorer 6, 7 또는 8에 관심이없는 경우

tr:not(:first-child) {
    color: red;
}

18
또한 tr:not(:first-of-type)일반화 된 첫 번째 자식이 아닌 특정 선택기의 첫 번째 인스턴스를 찾고 있다면 잠재적 인 솔루션으로 지적하고 싶습니다 .
Joshua Burns

2
나는 2019 년 우리가 IE 함께 할 생각 (IE10에 IE6 사용자의 0.5 % 이하
Webwoman

227

IE7 이상에서 지원되는 형제 자매를 사용한다고 언급 한 사람이 아무도 없습니다.

tr + tr /* CSS2, adjacent sibling */
tr ~ tr /* CSS3, general sibling */

둘 다 다음과 같은 방식으로 (HTML 테이블의 맥락에서) 정확히 동일한 방식으로 작동합니다.

tr:not(:first-child)

1
잠깐만 .. 어떻게 대답해야합니까? 그 문에서 "최초"를 얻을 수는 없습니다. OP가 요구하는 것입니다. tr + tr은 단일 요소를 가져옵니다. 그런 것 같아요 그럴 ~ 그럴 여러분 모두 (내가 부모 같은 추측 : 첫 아이 ~ TR)를 얻을 것이다,하지만 문법적으로에서 읽을 수 방법을하지 :
hairbo

5
@ hairbo : tr + tr은 다른 tr을 직접 따르는 tr을 가져옵니다. 세 개의 행이있는 테이블이있는 경우 세 번째 행이 두 번째 행 바로 뒤에 오므로 일치합니다. tr : first-child + tr을 대신 사용하면 단일 요소 만 얻게됩니다. +와 ~의 유일한 차이점은 ~가 언급 된 두 요소 사이에 다른 많은 요소를 허용한다는 것입니다.
BoltClock

추가하고 싶었던 것은 elem + elem타겟팅하려는 요소가 유일한 자식이 아닌 경우에 대한 훌륭한 일반적인 솔루션입니다. 예를 들어, a <h2>뒤에 여러 개의 <p>태그 가 있으면 <p>첫 번째 자식이 아닙니다.
DisgruntledGoat

27

이상적인 솔루션이지만 IE에서는 지원되지 않습니다.

tr:not(:first-child) {css}

두 번째 해결책은 모든 tr의 스타일을 지정하고 첫 번째 자식의 경우 CSS로 재정의하는 것입니다.

tr {css}
tr:first-child {override css above}

10

당신이 말하는 '첫 번째 라인'과 같은 소리는 테이블 헤더입니다. 따라서 실제로 사용 thead하고 tbody마크 업 ( 여기를 클릭하십시오 )을 생각해야합니다. ) 및 CSS 선택을위한 더 쉽고 크로스 브라우저 친화적 인 가능성 ( table thead ... { ... })


3

질문에 괜찮은 대답이 있지만 :first-child태그가 자식을 나타내는 항목 유형에 적용된다는 것을 강조하고 싶습니다 .

예를 들어, 코드에서 :

<div id"someDiv">
     <input id="someInput1" /> 
     <input id="someInput2" />
     <input id="someInput2" />
</div

첫 번째가 아닌 여백이있는 두 번째 두 요소에만 영향을 주려면 다음을 수행하십시오.

#someDiv > input {
     margin-top: 20px;
}
#someDiv > input:first-child{
     margin-top: 0px;
}

즉, inputs는 자식이므로 first-child선택기의 입력 부분에 배치합니다.


1

죄송합니다. 이것이 오래되었다는 것을 알고 있지만 첫 번째 요소를 제외한 모든 tr 요소의 스타일을 지정하고 모든 tr 요소에 대해 지정한 것을 취소하는 psuedo 클래스 : first-child를 사용하십시오.

이 예제에서 더 잘 설명됩니다.

http://jsfiddle.net/DWTr7/1/

tr {
    border-top: 1px solid;
}
tr:first-child {
    border-top: none;   
}

/ Patrik




0

누군가가 혜택을 줄 수 있습니다, 아래는 내가 사용한 것입니다.

ol li:not(:first-child) {
    background: black;
    color: white;
}

-1

CSS에서 의사 클래스 선택기를 다음과 같이 사용할 수도 있습니다.

.desc:not(:first-child) {
    display: none;
}

클래스가 .desc 인 첫 번째 요소에는 클래스가 적용되지 않습니다.

다음은 예제가 포함 된 JSFiddle입니다. http://jsfiddle.net/YYTFT/ , 이것은 의사 클래스 선택기를 설명하는 좋은 소스입니다. http://css-tricks.com/pseudo-class-selectors/


1
첫 번째 요소 인 포인트에는 스타일이 적용되지 않습니다. first-child클래스를 무시합니다.
Fez Vrasta

-3

CSS에서 원하는 미래를 모두 정의 할 때 클래스를 만들고 클래스를 사용할 수 있습니다.

이것은 서면으로 이루어집니다

<tr class="unselected">

그런 다음 CSS에서 줄이 있고 텍스트 정렬 명령을 예로 사용하십시오.

unselected {
  text-align:center;
}



selected {
  text-align:right;
}

2
답변하기 전에 질문을 이해하는 탄원
Ammar Bozorgvar
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.