Почему нет синтаксиса, подобного следующему?
#myTable (th,td) {}
Просто потому, что никто не удосужился предложить полезный синтаксис ... до недавнего времени (по сравнению с тем временем, когда вы опубликовали это) в 2008 году, как :any()
псевдокласс . Это обсуждалось более подробно чуть позже .
Первая реализация появилась в Mozilla, хотя и в конце 2010 года, под видом :-moz-any()
:
#myTable :-moz-any(th, td) {}
В следующем году, было бы предложено, чтобы WebKit следовал примеру , с :-webkit-any()
:
#myTable :-webkit-any(th, td) {}
Но если бы вы сейчас попытались использовать оба префикса вместе, то из-за правил синтаксического анализа селектора вам бы пришлось продублировать наборы правил , чтобы ваш код даже дольше и победив предполагаемое назначение псевдокласса:
#myTable :-moz-any(th, td) {}
#myTable :-webkit-any(th, td) {}
Что делает использование префиксных селекторов в общедоступном коде практически бессмысленным. Я не вижу никакого законного использования для них нигде, кроме кода конкретного производителя, что означает, что вы, вероятно, не будете использовать их вместе в одной таблице стилей.
В новом рабочем проекте Селекторов уровня 4 есть предложение для :matches()
псевдокласс , которое основано на первоначальном предложении :any()
, но может увидеть некоторые улучшения по мере пересмотра проекта:
#myTable :matches(th, td) {}
Конечно, поскольку это новый черновик, не ожидайте поддержки браузера намного позже.
В очень специфическом случае стилизации элементов th
и td
вы можете использовать *
вместо этого, предполагая, что ни один из элементов tr
в этой таблице никогда не будет содержать дочерних элементов, кроме элементов ячейки, таких как script
или template
:
#myTable tr > * {}
Но если вы любитель производительности и ненавидите селектор *
, вам придется проделать долгий путь.