10
Учитывая этот HTML:Использования мультипликатора «>» CSS селекторы
<table id="my-table">
<tr>
<td>
I want to apply my style to this
</td>
<td>
<table>
<tr>
<td>
But not to this
</td>
</tr>
</table>
</td>
</tr>
</table>
Я хотел бы применить стиль к клеткам, которые являются первыми детьми уровня таблицы.
Я думал, что я мог бы использовать это:
#my-table > tr > td {
color: #ff0000;
}
... Но это не работает. Это потому, что вы не можете использовать несколько селекторов >
? Как мне это сделать ?
Вложенные таблицы? это макет, если это так, то не использование таблиц поможет - также просто использовать классы для элементов, которые вы хотите настроить, намного проще, чем пытаться скопировать структуру HTML в селекторах css. –
@ToniLeigh внутренняя таблица не моя (это третий участник выбора даты) – yannick1976
Я бы, вероятно, попробовал класс на самом низком уровне, который вы контролируете тогда ('
ответ
Есть два аспекта, что происходит:
Браузер вставит
tbody
элемент, если не включать в себя один (или, по крайней мере, большинство из них большую часть времени, я всегда использую явный, поэтому я не знаю случаев с краями), и даже если у вас его нет в вашем HTML, вам нужно это в вашем селекторе, если вы используете>
(детский комбинатор). Это изменит ваш селектор на#my-table > tbody > tr > td
. (Я всегда выступаю в том числеtbody
явно в HTML, просто чтобы избежать путаницы и крайние случаи.)Таблица, внутри
td
наследует свой цвет отtd
он находится внутри. Поэтому, хотя ваш селектор нацелен на правильные элементы, их дочерние элементы наследуют цвет.Вы можете работать вокруг, что, давая явный цвет для
#my-table td
элементов, а затем специальный цвет только#my-table > tbody > tr > td
элементы.Пример (обратите внимание на
tbody
в HTML, а также в селекторе):В комментарии вы сказали, что вы не контролируете внутреннюю таблицу. Если вы контролируете внешней таблицы, вы можете решить эту проблему, просто поставив класс на клетки, которые вы хотите применить правило к, а затем правило применяется только к
td
с с этим классом:Примера (примечание
tbody
в HTML, а также в селекторе):источник
2015-11-04 12:18:42
Увы, я не могу этого сделать, потому что внутренний стол не мой (это сторонний выбор даты), и я не хочу дублировать свойства. Но похоже, что это так хорошо, как это получается ... – yannick1976
@ yannick1976: Звучит весело. :-) Но хорошая новость заключается в том, что если вы контролируете внешнюю таблицу, но не внутреннюю, есть другой подход: используйте класс в своем первом 'td'. Я добавил пример этого. –
Я не мог найти ссылку на него на MDN, так что, возможно, вы не можете, но возможно ли использовать значение 'initial' on color? –
Привет, теперь вы можете попробовать таким образом
more about tbody
источник
2015-11-04 12:16:44
Это все еще подчеркивает 'но не для этого' –
Кроме того, код/разметка без пояснения обычно * не используется *. –
В вашем HTML нет 'tbody', а на вашем CSS ... Это странно. – KittMedia
насколько я вижу это вам нужен: первый ребенок, а также, в противном случае вы стили удар последнего TD, если вам нужна граница :
источник
2015-11-04 12:40:08
Это не сработает. ': first-child' нацеливает первого ребенка по порядку, а не по уровню вложенности. Если у меня есть еще один «td» первого уровня, стиль к нему не применяется. – yannick1976
Истинно, если вы добавите еще один td первого уровня, то этот dosnt работает, я только посмотрел на ваш пример :) –
color
обладает тем свойством, что она применяется для всех его Чайлдс. Поэтому вам нужно будет ограничить это. Вы можете сделать это с>
и:nth-child(n)
Ваш HTML должен иметь
tbody
но это не может быть необходимо, браузеры будут создавать их для вас, но это рекомендуется использоватьtbody
себя.Вы можете изменить это, если ваши таблицы становятся все больше .., например, с помощью формул, как
3n+1
,odd/even
и т.д .. Также вы можете использовать несколько пробелов или>
и теги элемента, чтобы указать все ваши потребности. В зависимости от того, что вы хотите.More info about nth-child() here
источник
2015-11-04 12:51:40
Смежные вопросы