css3 специфичность nth-child
Почему эти два не выходят эквивалентными? Первый показывает зеленый ряд, а второй нет. Разница лишь в html c. Кроме того, какова специфика селектора nth-child?
<!DOCTYPE html>
<html>
<head>
<title>Stripe Test</title>
<style type='text/css'>
tr:nth-child(2n+1)
{
background-color: red;
}
tr.c
{
background-color: green;
}
</style>
</head>
<body>
<table class='stripe'>
<tr class='c'>
<td>one</td>
</tr>
<tr>
<td>two</td>
</tr>
<tr>
<td>three</td>
</tr>
</table>
</body>
</html>
vs-
<!DOCTYPE html>
<html>
<head>
<title>Stripe Test</title>
<style type='text/css'>
tr:nth-child(2n+1)
{
background-color: red;
}
tr .c
{
background-color: green;
}
</style>
</head>
<body>
<table class='stripe'>
<tr class='c'>
<td>one</td>
</tr>
<tr>
<td>two</td>
</tr>
<tr>
<td>three</td>
</tr>
</table>
</body>
</html>
3 ответа
tr.c
(без пробела)`- строка таблицы класса c.
tr .c
(с пробелом) - это строка таблицы, за которой следует какой-то ДРУГОЙ неуказанный тег с классом c.
Пространство подразумевает отношения родитель / ребенок. Так как у вас есть c
класс ON самого тега tr, ниже дочернего элемента нет tr
это имеет c
учебный класс.
Второй - это совершенно другой селектор. tr .c
с пробелом между ними ищет элемент с именем класса "c", у которого есть предок <tr>
элемент. Первый tr.c
ищет <tr>
элемент с именем класса "c".
Это не имеет ничего общего со спецификой, но вместо этого ваше понимание CSS.
Попробуйте вместо этого использовать:nth-child(odd), а также заметьте, что IE не нравится вообще.