Czy w CSS można wybrać wiele elementów, które mają przodka określonej klasy, ID itp.?
Obecnie nie bez powielania cały wybierak przodka i określenie wszystkich potomków, niestety :
table.exams caption,
table.exams tbody,
table.exams tfoot,
table.exams thead,
table.exams tr,
table.exams th,
table.exams td
Dopiero do późna po Selektory 3 była sfinalizowana, że proponowane są pseudo notacja klasyczna, a dopiero niedawno zaczęły pojawiać się podstawowe implementacje. Zobacz this answer, aby uzyskać lekcję historii.
W skrócie, pseudoklasa, która została wprowadzona do standardu, jest znana jako :matches()
. W odległej przyszłości, gdy przeglądarek rozpoczęcie wdrażania :matches()
, będzie w stanie zrobić coś takiego:
table.exams :matches(caption, tbody, tfoot, thead, tr, th, td)
Jeśli nie, to czy jest jakiś sposób, aby zaznaczyć wszystkie potomków tej klasy?
Cóż, można po prostu użyć gwiazdki o nazwie *
, która reprezentuje any element. Biorąc pod uwagę, że masz th
i td
w swoim selektora, to prawdopodobnie znaczy wszystkich potomków zamiast wszystkie dzieci table.exams
, więc nie używaj >
, użyj spacji zamiast:
table.exams *
ale naprawdę, unikać robienia tego . Jeśli możesz, zrób wszystko, aby określić, jakiego rodzaju potomków próbujesz wybrać.
szczególności z tabel, można uciec z table.exams > :not(.colgroup), table.exams > * > tr > *
, ale jak można powiedzieć jest to niezwykle tajemniczy (nie wspominając zakłada nie masz script-supporting elements lub zagnieżdżone tabele w tej tabeli) i "Lepiej się po prostu wymieniaj wszystkie potomków, które chcesz jawnie.
Pamiętaj, że jest ** wysoce ** nieefektywna. Jak najpierw wybierz ** wszystkie ** elementy w DOM, a następnie ** przechodzisz do tyłu ** aż do elementu głównego dla każdego, szukając elementu 'table'. –
Świetna pomoc! dzięki. –