2012-06-15 15 views

Odpowiedz

23

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.

+2

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'. –

+0

Świetna pomoc! dzięki. –

0

selektor dzieci wygląda następująco:

ul > li { 

} 

ten będzie skierowany cały li które są bezpośrednimi dzieci ul

jeśli chcesz dotrzeć do wszystkich potomków, użyj wybieraka *

Nie jestem pewien, czy zrozumiałem pierwszą część twojego pytania!

0

Czy można wybrać wiele znaczników, które mają przodka określonej klasy w CSS?

Jest możliwe użycie SCSS osiągnąć wynik podobny do: zapałek, jak pokazano na this article

Ponadto, niektóre przeglądarki mają częściowe wsparcie dla :matches ze szczególnym przedrostka sprzedawcy.

Powiązane problemy