Ответ 1
Можно ли выбрать несколько элементов, которые имеют предка определенного класса, id и т.д. в CSS?
В настоящее время, не обойдя весь селектор предков и указав всех потомков, к сожалению 1:
table.exams caption,
table.exams tbody,
table.exams tfoot,
table.exams thead,
table.exams tr,
table.exams th,
table.exams td
Только до тех пор, пока Селекторы 3 не были доработаны, они предложили обозначение псевдокласса для этого, и только недавно начались базовые реализации. См. этот ответ для небольшого урока истории.
Короче говоря, псевдокласс, который теперь вступил в стандарт, известен как :matches()
. В отдаленном будущем, когда браузер начнет внедрять :matches()
, вы сможете сделать что-то вроде этого:
table.exams :matches(caption, tbody, tfoot, thead, tr, th, td)
Если нет, есть ли способ выбрать всех потомков этого класса?
Ну, вы можете просто использовать звездочку *
, которая представляет любой элемент. Учитывая, что в вашем селекторе есть th
и td
, вы, вероятно, имеете в виду все потомки, а не все дочерние элементы table.exams
, поэтому не используйте >
, вместо этого используйте пробел:
table.exams *
Но на самом деле, избегайте этого. Если вы можете, сделайте все возможное, чтобы указать, какие потомки вы хотите выбрать.
1 В частности, с таблицами вы можете уйти с table.exams > :not(.colgroup), table.exams > * > tr > *
, но, как вы можете сказать, это невероятно загадочно (не говоря уже о том, что предполагается, что у вас нет script -поддерживающие элементы или вложенные таблицы в этой таблице), и вам лучше просто перечислять все потомки, которые вы хотите явно.