2010-04-14 7 views
85

Co znajduje się punkt za pomocą tej składniSelektory CSS> kontra przestrzeni

div.card > div.name 

Jaka jest różnica między tym

div.card div.name 
+0

W związku z tym pytaniem, ponieważ nie wiedziałem o tym i mogłem go użyć do rozwiązania problemu, który mam, które przeglądarki obsługują ten typ selektora? – Kyle

+3

Jest obsługiwany we wszystkich obecnych przeglądarkach. IE uzyskało wsparcie w wersji 7: http://msdn.microsoft.com/en-us/library/cc351024(VS.85).aspx#combinators –

Odpowiedz

130

A > B wybiorą tylko B, które są bezpośrednimi dziećmi do A (to jest, nie ma żadnych innych elementów pomiędzy nimi).

A B wybierze dowolne B, które są w środku A, nawet jeśli są między nimi inne elementy.

0

div.card > div.name meczów <div class='card'>....<div class='name'>xxx</div>...</div> ale to nie pasuje <div class='card'>....<div class='foo'> ... <div class='name'>xxx</div>..</div>....</div>

div.card div.name pasuje do obu.

Oznacza to, że selektor > zapewnia, że ​​wybrany element po prawej stronie z > jest niepoprawnym dzieckiem elementu po jego lewej stronie.

Składnia bez > pasuje do każdego <div class='name'>, który jest potomkiem (nie tylko dzieckiem) z <div class='card'>.

+0

Tak, odpowiedzi, które wymagają więcej niż 15 minut, nie są warte rozważenia; -) –

6

> jest child selector. Określa ona tylko bezpośrednie elementy podrzędne, a nie żadnego potomka (w tym wnuków Grand-wnuki itd), jak w drugim przykładzie bez >.

Selektor potomków nie jest obsługiwany przez IE 6 i niższe. Świetna tabela zgodności to here.

+1

Ta odpowiedź wymaga naprawy. '>' jest [selektorem podrzędnym] (https://www.w3.org/TR/CSS2/selector.html#child-selectors); to [potomek selektor] (https://www.w3.org/TR/CSS2/selector.html#descendant-selectors). – SNag

+0

@SNag naprawiony, nie jestem pewien, co myślałem, dzięki! –