¿Qué significa el selector CSS ">" (signo mayor que)?

Resuelto Misha Moroshko asked hace 14 años • 8 respuestas

Por ejemplo:

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

¿ Qué >significa exactamente el letrero?

Misha Moroshko avatar Jul 12 '10 11:07 Misha Moroshko
Aceptado

>es el combinador hijo , a veces llamado erróneamente combinador descendiente directo. 1

Eso significa que el selector div > p.some_classsolo coincide con los párrafos .some_classque están anidados directamente dentro de a div, y no con los párrafos que están anidados más adentro. Esto implica que cada elemento que coincide div > p.some_classnecesariamente también coincide div p.some_classcon el combinador descendiente (espacio), por lo que, comprensiblemente, a menudo se confunden los dos.

Una ilustración que compara el combinador hijo con el combinador descendiente:

div > p.some_class { 
    background: yellow;
}

div p.some_class { 
    color: red;
}
<div>
    <p class="some_class">Some text here</p>     <!-- [1] div > p.some_class, div p.some_class -->
    <blockquote>
        <p class="some_class">More text here</p> <!-- [2] div p.some_class -->
    </blockquote>
</div>
Expandir fragmento

¿Qué elementos coinciden con qué selectores?

  1. Coincidente con ambos div > p.some_classydiv p.some_class
    Esto p.some_classse encuentra directamente dentro de div, por lo que se establece una relación padre-hijo entre ambos elementos. Dado que "niño" es un tipo de "descendiente", cualquier elemento hijo es, por definición, también un descendiente. Por tanto, se aplican ambas reglas.

  2. Coincidente solo condiv p.some_class
    Esto p.some_classestá contenido en a blockquotedentro de div, en lugar de en divsí mismo. Aunque este p.some_classes un descendiente de div, no es un niño; es un nieto. Por tanto, sólo se aplica la regla con el combinador descendiente en su selector.


1 Muchas personas van más allá y lo llaman "hijo directo" o "hijo inmediato", pero eso es completamente innecesario (e increíblemente molesto para mí), porque un elemento hijo es inmediato por definición de todos modos, por lo que significan exactamente lo mismo. No existe tal cosa como un "niño indirecto".

BoltClock avatar Jul 12 '2010 04:07 BoltClock

>(signo mayor que) es un combinador CSS.

Un combinador es algo que explica la relación entre los selectores.

Un selector CSS puede contener más de un selector simple. Entre los selectores simples podemos incluir un combinador.

Hay cuatro combinadores diferentes en CSS3:

  1. selector descendiente (espacio)
  2. selector de niños (>)
  3. selector de hermanos adyacentes (+)
  4. selector de hermanos general (~)

Nota: < no es válido en selectores CSS.

ingrese la descripción de la imagen aquí

Por ejemplo:

<!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>

Producción:

ingrese la descripción de la imagen aquí

Más información sobre los combinadores CSS

Premraj avatar Feb 13 '2017 00:02 Premraj

Como otros mencionan, es un selector de niños. Aquí está el enlace apropiado.

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

Dagg Nabbit avatar Jul 12 '2010 04:07 Dagg Nabbit