O que significa o seletor CSS ">" (sinal com mais que o sinal)?


476

Por exemplo:

div > p.some_class {
  /* Some declarations */
}

O que exatamente significa o >sinal?

Respostas:


673

>é o combinador filho , às vezes chamado erroneamente de combinador descendente direto. 1 1

Isso significa que o seletor div > p.some_classseleciona apenas parágrafos .some_classaninhados diretamente dentro de a dive não parágrafos aninhados mais dentro.

Uma ilustração:

<div>
    <p class="some_class">Some text here</p>     <!-- Selected [1] -->
    <blockquote>
        <p class="some_class">More text here</p> <!-- Not selected [2] -->
    </blockquote>
</div>

O que é selecionado e o que não é:

  1. Selecionado
    Está p.some_classlocalizado diretamente dentro do div, portanto, um relacionamento pai-filho é estabelecido entre os dois elementos.

  2. Não seleccionado
    Esta p.some_classé contido por um blockquotedentro do div, e não o divpróprio. Embora este p.some_classseja um descendente do div, não é uma criança; é um neto.

    Conseqüentemente, embora div > p.some_classnão corresponda a esse elemento, div p.some_classserá, usando o combinador descendente .


1 Muitas pessoas vão mais longe e chamam de "filho direto" ou "filho imediato", mas isso é completamente desnecessário (e incrivelmente irritante para mim), porque um elemento filho é imediato por definição de qualquer maneira, então significa exatamente a mesma coisa. Não existe "filho indireto".


2
+1 É realmente chamado de seletor de filhos ? Nesse caso, isso é bastante enganador. Eu pensaria que #something aseria um seletor de crianças.
Alex

2
@alex: yes :) #something apode significar aneto ou bisneto #something(não leva em consideração a profundidade do assentamento).
BoltClock

12
@alex é chamado de combinador filho , o espaço é chamado de combinador descendente
robertc

33
Quando alguém é filho de seus avós, estamos lidando com um exemplo realmente desagradável de incesto. Felizmente, isso é impossível em HTML.
Quentin

8
Não ouço nenhum leigo chamando seus filhos de filhos diretos por uma questão de clareza.
BoltClock

41

> (sinal maior que) é um combinador de CSS.

Um combinador é algo que explica o relacionamento entre os seletores.

Um seletor de CSS pode conter mais de um seletor simples. Entre os seletores simples, podemos incluir um combinador.

Existem quatro combinadores diferentes no CSS3:

  1. seletor descendente (espaço)
  2. seletor filho (>)
  3. seletor de irmão adjacente (+)
  4. seletor geral de irmãos (~)

Nota: < não é válido nos seletores de CSS.

insira a descrição da imagem aqui

Por exemplo:

<!DOCTYPE html>
<html>
<head>
<style>
div > p {
    background-color: yellow;
}
</style>
</head>
<body>

<div>
  <p>Paragraph 1 in the div.</p>
  <p>Paragraph 2 in the div.</p>
  <span><p>Paragraph 3 in the div.</p></span> <!-- not Child but Descendant -->
</div>

<p>Paragraph 4. Not in a div.</p>
<p>Paragraph 5. Not in a div.</p>

</body>
</html>

Resultado:

insira a descrição da imagem aqui

Mais informações sobre CSS Combinators



@premraj Obrigado pela excelente explicação dos seletores de pais e filhos!
YCode 12/02/19

O que significa então quando você recebe algo parecido com o .entry-content > * {"code" }que é seguido por .entry-content {"other code" }? Não .entry-content > *cobre todos os filhos de entry-content?
YCode 12/02/19

14

Como outros mencionam, é um seletor de filhos. Aqui está o link apropriado.

http://www.w3.org/TR/CSS2/selector.html#child-selectors


Muito obrigado pelo link ! Eu descobri também os "seletores de irmãos adjacentes" lá.
Misha Moroshko

Você encontrará suporte para navegador no Sitepoint. Não funciona no IE6 se for importante para seus projetos, OK em qualquer outro lugar. Este recurso é esp. útil para irmãos,: enésimo-criança (etc) onde o suporte está ainda incompleta
FelipeAls

10

Ele combina pelementos com a classe some_classque está diretamente sob a div.


5

Todas as ptags com classe some_classque são filhos diretos de uma divtag.


4
html
<div>
    <p class="some_class">lohrem text (it will be of red color )</p>    
    <div>
        <p class="some_class">lohrem text (it will  NOT be of red color)</p> 
    </div>
    <p class="some_class">lohrem text (it will be  of red color )</p>
</div>
css
div > p.some_class{
    color:red;
}

Todos os filhos diretos <p>com .some_classeles receberiam o estilo aplicado a eles.


3

(seletor filho) foi introduzido no css2. div p {} seleciona todos os elementos p decedentes dos elementos div, enquanto div> p seleciona apenas filho p elementos, não neto, bisneto, etc.

<style>
  div p{  color:red  }       /* match both p*/
  div > p{  color:blue  }    /* match only first p*/

</style>

<div>
   <p>para tag, child and decedent of p.</p>
   <ul>
       <li>
            <p>para inside list. </p>
       </li>
   </ul>
</div>

Para obter mais informações sobre CSS Ce [lectors e seu uso, consulte meu blog, css selectors e css3 selectors


0

O seletor de sinal maior (>) no CSS significa que o seletor à direita é um descendente / filho direto do que estiver à esquerda.

Um exemplo:

article > p { }

Significa apenas estilizar um parágrafo que vem depois de um artigo.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.