Псевдокласс класса nth-child
ссылается на «N-й согласованный дочерний элемент», то есть если у вас есть структура следующим образом:
Hello
Paragraph
Target
Затем p:nth-child(2)
выберет второй ребенок, который также ap (а именно p
с «абзацем»). p:nth-of-type
выберет второй согласованный элемент p
, а именно нашу цель p
).
Вот отличная статья по этой теме Криса Койера @ CSS-Tricks.com
Причина ваших разрывов заключается в том, что тип относится к типу элемента (а именно div
), но первый div не соответствует указанным вами правилам (.row .label
), поэтому правило не применяется.
Причина в том, что CSS анализируется справа налево , что означает, что браузер сначала смотрит на :nth-of-type(1)
, определяет его ищет элемент типа div
, который также является первым его типом, который соответствует элементу .row
и первому элементу .icon
. Затем он читает, что элемент должен иметь класс .label
, который ничего не соответствует приведенному выше.
Если вы хотите выбрать первый элемент метки, вам нужно будет либо обернуть все ярлыки в их собственный контейнер или просто использовать nth-of-type(3)
(при условии, что всегда будет два значка).
Другой вариант, будет (к сожалению) использовать ... ждать его ... jQuery:
$(function () {
$('.row .label:first')
.css({
backgroundColor:"blue"
});
});
Вы можете использовать цикл for для просмотра всех данных и иметь переменную-счетчик для всех 9 пунктов назначения. Используйте Сплит, чтобы получить правильные данные из данных. Вот некоторый псевдокод, который может вам помочь:
HourVariable = 0
For i = 1 to endOfdata
dHour = split(split(dataline(i),"|")(1),":")(0) 'Get the hour from the dataline
If Hourvariable <> dHour then 'Check if the hour changed. In that case the data for that hour needs to be written and all counters go to 0
If cKitchen > 0 then NewData = NewData & "|" & dHour & "|" & cKitchen & "|Kitchen|" & vbNewLine
If cBedroom > 0 etc...
cKitchen = 0
cBedroom = 0
HourVariable = dHour
Select case split(dataline(i),"|")(3) 'Check which destination is in the current dataline
Case "Kitchen": cKitchen = cKitchen + 1
Case "Bedroom": etc...
End Select
Else 'In other cases, just add to the counters
Select case split(dataline(i),"|")(3) 'Check which destination is in the current dataline
Case "Kitchen": cKitchen = cKitchen + 1
Case "Bedroom": etc...
End Select
End if
next i