2017-02-07 8 views
0

У меня есть следующий сценарий:Selector для братьев и сестер конкретного элемента, которые соответствуют условию

<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 элементы под второй заголовок - красный.

Я пробовал различные nth-child и соседний родственный (+), но все мои попытки неполны.

tr[class^=data] получает все элементы, которые я хочу затронуть, но мне они нужны в двух группах.

Я не знаю, сколько data элементов у меня будет, я знаю, у меня есть только 2 header

Я не могу использовать JavaScript/JQuery здесь, только селекторы

+1

Вы пробовали вообще сборник? '~' – Eamonn

+0

Нет, никогда не слышал об этом, спасибо! – AlexD

+0

Вам нужно 'tr [class^= data]'? Будут ли когда-либо элементы 'tr', которые не имеют классов' dataxxx', кроме классов '.header'? Поскольку селектора атрибутов, такие как '^ =', очень медленны и зависят от того, насколько велики ваши таблицы могут иметь заметное влияние. – Nope

ответ

2

Если вы знаете, что вы будете иметь только две строки заголовка, вы можете просто стили для второго набора строк данных переопределяют первый набор строк данных:

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

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

Если вы можете изменить HTML , Просто группировать заголовка и данных строк в TBODY элементы и вам не придется беспокоиться о тщательно выбирая только строки, связанные с каждым заголовком:

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

Я предполагаю, что вы имеете в виду [это] (http://stackoverflow.com/a/3008735/1891677)? –

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

 Смежные вопросы

  • Нет связанных вопросов^_^