2017-02-07 3 views
0

I以下のシナリオがありますセレクタ

<table> 
    <tr class="header"> 
    <tr class="data1"> 
    <tr class="data2"> 
    <tr class="data3"> 
    <tr class="header"> 
    <tr class="data1"> 
    <tr class="data2"> 
</table> 

私は青に最初のヘッダ下data要素のテキストの色を変更したい、とdata要素の下を2番目のヘッダーは赤です。

私は様々なnth-childとそれに隣接する兄弟(+)を試しましたが、私の試行はすべて不完全です。

tr[class^=data]私が影響を与えたいすべての要素を取得しますが、2つのグループに分けてください。

私は私が唯一の2 header

あなたが知っている場合、私は、ここだけのセレクタ

+1

あなたは一般的なを試してみました:、ちょうどグループがあなたのヘッダとデータのtbody要素に行と、あなたは各ヘッダーに関連付けられている行だけを選択する方法について慎重に心配する必要はありません。兄弟コンビネータ? '〜' – Eamonn

+0

いいえ、聞いたことがない、ありがとう! – AlexD

+0

'tr [class^= data]'が必要ですか? '.header'クラス以外の' dataxxx'クラスを持たない 'tr'要素が存在するでしょうか? '^ ='のような属性セレクタは非常に遅く、テーブルの大きさに応じて目に見える影響があります。 – Nope

答えて

2

をジャバスクリプト/ jqueryのを使用することはできませんを持って知っています、私は必要がありますどのように多くのdata要素がわかりません

.header ~ tr[class^=data] { 
    color: #f00; 
} 

.header ~ .header ~ tr[class^=data] { 
    color: #00f; 
} 

変更することができた場合はHTML:あなたは2つのだけヘッダー行を持っていることを、あなただけのデータ行の第二セットのスタイルは、データ行の最初のセットのそれらを上書きすることができます

tbody:first-child td { 
 
    color: #f00; 
 
} 
 

 
tbody:last-child td { 
 
    color: #00f; 
 
}
<table> 
 
    <tbody> 
 
    <tr class="header"><th>Header 
 
    <tr class="data1"><td>Data1 
 
    <tr class="data2"><td>Data2 
 
    <tr class="data3"><td>Data3 
 
    <tbody> 
 
    <tr class="header"><th>Header 
 
    <tr class="data1"><td>Data1 
 
    <tr class="data2"><td>Data2 
 
</table>

+0

好奇心:すべてのブラウザでタグを自動クローズしますか? –

+2

@Andrei Gheorghiu:より正確には、終了タグはすべてオプションです(を除く)。 XHTMLでは必須です。疑いがあるときは、とにかく終了タグを使用してください - 私は自分のしていることを知っているので、簡潔さのためにそれらを放置しています。 – BoltClock

+0

あなたは[this](http://stackoverflow.com/a/3008735/1891677)を意味すると思いますか? –

0
.header ~ [class^="data"] { 
    background-color: red; 
} 
.header ~ .header ~ [class^="data"] { 
    background-color: blue; 
}