2010-08-27 3 views
14

Czytam, że za pomocą selektora podrzędnego (>) w css jest szybszy niż selektor potomka (). Na przykład: p > em w przeciwieństwie do p em.CSS dziecko vs selektor potomny

Wydaje mi się, że większość kodu, jaki widzę na wolności, nie wykorzystuje tego.

Rozumiem, że niektóre okoliczności zasługują na skorzystanie z jednego lub drugiego, ale ogólnie, czy powinienem starać się korzystać z selektora dziecka, kiedy tylko jest to możliwe? A może powinienem podążać za konwencją i polegać głównie na selektorze potomnym?

Odpowiedz

11

Teoretycznie selektor podrzędny będzie szybszy niż selektor potomka, ponieważ przeglądarka może zatrzymać sprawdzanie węzłów potomnych po pierwszym poziomie. Podejrzewam jednak, że jakiekolwiek zwiększenie wydajności, które widzisz z tego będzie znikome, ponieważ przeglądarki szybko analizują CSS.

Jak wskazano w przykładzie NullUserException, selektor nie działa w IE6, więc jeśli interesuje Cię wiele informacji o IE6, nie załadowałbym tego pliku CSS. Ale warto pamiętać, że powinniście mieć bardzo jasne pojęcie, do którego użyć w jakiej sytuacji. Zadaj sobie pytanie: "czy chcę, aby ta deklaracja obejmowała pasujące do siebie dzieci, czy też chcę, aby obejmowała tylko bezpośrednio pasujących dzieci?" Może wydawać się oczywiste, że zadajesz sobie takie pytanie, ale tak naprawdę jest to jedyny sposób wyboru między tymi dwoma. Nie używaj >, chyba że masz na myśli.

zobaczyć także moje pytanie Is there an advantage to using very specific selectors in CSS?

Zobacz także: CSS selector support per browser

+1

I rzeczywiście usunięte moją odpowiedź w ogóle, jak już jesteś obejmujące część o IE6. – NullUserException

+0

Dzięki chłopaki! Zabawne jest to, że nawet nie zdawałem sobie sprawy z rzeczy IE6. Nie mogę powiedzieć, że jestem zaskoczony. To całkowicie wyjaśnia, dlaczego nie widzę wielu na wolności. –

+0

zgodnie z https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Writing_efficient_CSS, selektory css są dopasowane od dołu do góry – Juan