2012-04-16 7 views
2

要素にスタイルを付ける必要がありますが、要素にクラスまたはIDがなく、コードのその部分を編集してクラスまたはIDを配置することもできません。CSSを使用して、DOMの順序に基づいて要素のスタイルを設定できますか?

はjQueryのでは、私は.EQ [4]か何かでそれを選択するだろうが、私は唯一のCSSを使用することができます。

2番目のスタイルには<td>のスタイルを指定できますか?<tr>?

<table class="tableClass"> 
    <tr> 
     <td>...</td> 
     <td>...</td> 
     <td>...</td> 
    </tr> 
    <tr> 
     <td>...</td> 
     <td> I NEED TO STYLE THIS ONE </td> 
     <td>...</td> 
    </tr> 
</table> 
+0

私はCSS3に精通しています:n番目の子()セレクタが、それは技術的には、「親のn番目の子であるすべての要素のスタイルを指定します」、それは各第二​​を選択します私が必要としているものではありません... – SpaceNinja

+0

nth-child(x)を使用して2番目のを選択し、次にその2番目の​​を選択すると、スタイルはそれぞれ – wzub

答えて

1

ここでも、より良い互換性のためにIE7とIE8で動作する別の方法です:

.tableClass tr + tr > td + td { 
    /* selects 2nd to last td from 2nd to last rows. 
    Do something here with some CSS instructions of your choice. 
    Beware of thead and th, they aren't expected in your example */ 
} 
.tableClass tr + tr > td + td + td, 
.tableClass tr + tr + tr > td + td { 
    /* selects 3rd to last td from 2nd to last rows and also 
    2nd to last td from 3rd to last rows. 
    Cancel here everything you did in previous CSS rule! */ 
} 
  • td + tdは最初td以外のすべてを選択し、td + td + tdは、第一及び第二td以外のすべてを選択:2つのCSSルールであなたは終わった。行を考慮する必要があるため、例の複雑さが増しますが、後者のセレクタルールをtr + tr + trセレクタと組み合わせるだけで済みます。
  • これは:not(:first-child)を交換するための素晴らしいトリックで、それはそれについて知っておく価値です。それはあなたの例のようにもっと複雑になると、それを使うかどうかはあなた次第です。あなたは、pは、その後のp再びH4続いH3のような異なる要素を扱っているとき
  • +
  • ~(一般兄弟)に置き換えることができます。 p + pはありませんが、まだ p ~ pになります。
  • 上記のコードは、各trtableの子、唯一の子孫であることを期待していないとして、tabletrかの間にtbody要素があるのか​​どうか動作します。
+0

'tr:first-child + tr'と' td:first-child + td'を使うだけで、スタイルを取り消す必要はありません。 – BoltClock

+0

ブーム!ありがとう!下位互換性が問題なので、余分にありがとう! – SpaceNinja

+1

下位互換性のあるコードを探している場合は、質問にタグを付けるのを避けるべきです[css3]。 – BoltClock

3

あなたは:nth-child()を使用できますが、両方tdその親trとそれを使用する必要があります。

.tableClass > tr:nth-child(2) > td:nth-child(2) 
+0

に適用されません。ありがとうございました! – SpaceNinja

1

nth-childセレクタを使用し、確かに。この場合、

table tr:nth-child(2) td:nth-child(2) 

ここでは、これがどのように動作するかについてのgreat explanationです。

関連する問題