2014-09-17 1 views
2

테이블이 있습니다. 3 행으로 가정 해 봅시다. 처음 두 개가 위쪽으로 세로로 정렬되고 두 번째 세로가 가운데로 세로로 정렬되기를 원합니다.하나의 테이블 행을 가운데로 정렬하고 다른 테이블 행을 맨 위에 정렬하는 데 필요한 최소 코드는 무엇입니까?

나는 정의하려고하면 :

td {vertical-align:top} 
tr.middle {vertical-align:middle} 

과 HTML에서

, 그것은 TD 정의는 지속 것처럼 작동하지 않습니다 관련 <tr>- class="middle", 을 할당합니다. 내가 관리했습니다 유일한 방법은

td.top {vertical-align:top} 
td.middle {vertical-align:middle} 

을 정의하고 너무 많은 코드 매 TD에 해당 클래스를 할당하는 것입니다.

최소 코드로이를 수행하는 방법은 무엇입니까? 때문에 계단식의 계단식 자연

tr.top { 
    vertical-align: top; 
} 

: http://jsfiddle.net/sqhxqdck/

내가 질문을 오해하고있어하지 않는 한, 모두가 정말로 필요가있다 :

+0

당신은 그것을 바이올린 수 있습니까? – divakar

+0

현재 솔루션을 사용하면 클래스를 모든 'td'에 할당하는 것이 어렵지 않습니다. 자바 스크립트를 사용하면 한 줄로 처리 할 수 ​​있습니다. "너무 많은 코드"는 HTML 내에서 클래스를 지정하는 것이 너무 많은 타이핑을 필요로한다는 것을 의미합니까? 아니면이 일을하는 더 좋은 방법을 찾고 있습니까? –

+0

더 좋은 방법은 내 방식이 너무 복잡하고 우아하지 않다는 것입니다. – rockyraw

답변

1

단순히 이렇게하면 HTML을 편집하거나 클래스를 추가 할 필요가 없습니다.

tr:nth-child(1) td {vertical-align:top;} 
tr:nth-child(2) td {vertical-align:middle;} 
tr:nth-child(3) td {vertical-align:bottom;} 

데모http://jsfiddle.net/v68ao3pv/1

는 IE8 지원이 필요한 경우 : 현재 CSS를 사용

tr:first-child td   {vertical-align:top;} 
tr:first-child + tr td  {vertical-align:middle;} 
tr:first-child + tr + tr td {vertical-align:bottom;} 

데모http://jsfiddle.net/v68ao3pv/2/show

+0

고마워! 그건 좋은 방법이지만 IE8에서도 잘 작동 할만한 것을 찾고 있습니다. – rockyraw

+0

@rockyraw IE8에서 작동하는 다른 방법을 추가했습니다. – Arbel

+0

쿨, 고마워! 그래서 각각의 추가 행에 대해 나는'+ tr'을 추가한다고 가정합니다 – rockyraw

0

바이올린보다 훨씬 많은 최소를 얻을하지 않습니다 스타일 시트.

+0

'td' 규칙에'vertical-align' 속성을 지정했기 때문에 솔루션이 약간 허약합니다.'tr.top'에 대한 규칙을 오버라이드합니다 . 예를 들어, 다음과 같은 http://jsfiddle.net/audetwebdesign/sqhxqdck/1/ –

+0

을 생각해보십시오. 코드의 최소량은 "약간의 가짜 안전을 염두에 둔 약간의 코드"가 아닙니다. 당연히 모든 CSS는 당신이 그것을 더 특이성으로 덮어 쓴다면 깨질 것입니다 (빠른 참조 : http://cssspecificity.com/). 다음은 똑같이 사소한 방법으로 답변을 해독 한 것입니다. http://jsfiddle.net/ag2cgcd0/ –

1

예, 방법이 있습니다. 하위 선택기를 사용할 수 있습니다. 그 말은, 첫 번째 TR과 두 번째로 클래스 "중간"에 클래스 "최고"를 할당하고 CSS에 쓰기 :

.top td{vertical-align:top} 
.middle td{vertical-align: middle} 
//  ↑ 
// THIS space is important. 

은 그래서 상단/중간 인 요소 내의 모든 테이블 셀을 선택

수업. 이것은 당신이 꽤 자주 사용할 수있는 매우 실용적인 것입니다. website of the W3 Consortium에있는 CSS 선택기에 대해 자세히 알아보십시오.

+0

감사합니다! 이것은 꽤 잘 작동하는 것 같다 – rockyraw

1

을의 .middle 규칙 선택이보다 구체적인합니다를 이 경우

td {vertical-align:top} 
tr.middle td {vertical-align:middle} 
모든 td 기본적으로 상부 및 중간에 정렬하도록 .middle 행의 모든 ​​셀을 강제로 더 특정 선택에 정렬된다.

+0

감사! 너무 일한다. – rockyraw

관련 문제