Selectores CSS Hijo vs Descendiente


Estoy un poco confundido entre estos 2 selectores.

El descendiente: selector

div p

Seleccione todo p dentro de un div si es o no un descendiente inmediato? Así que si el p está dentro de otro div todavía será seleccionado?

Luego el selector hijo :

div > p

¿Cuál es la diferencia? ¿Significa un niño inmediato niño? Eg.

<div><p>

Vs

<div><div><p>

¿Se seleccionarán ambos, o no?

Author: SherylHohman, 2009-07-25

7 answers

Solo piensa en lo que las palabras "niño" y "descendiente" significan en inglés:

  • Mi hija es a la vez mi hija y mi descendiente
  • Mi nieta no es mi hija, pero es mi descendiente.
 418
Author: RichieHindle,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-07-25 14:46:51

Sí, tienes razón. div p coincidirá con el siguiente ejemplo, pero div > p no.

<div><table><tr><td><p> <!...

El primero se llama descendiente selector y el segundo se llama selector de hijo.

 44
Author: Çağdaş Tekin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-07-25 14:31:27

Bascailly, "b" selecciona todos los b dentro de a, mientras que "a>b" selecciona b lo que son los niños a los un, no seleccione b ¿cuál es hijo de b ¿cuál es hijo de un.

Este ejemplo ilustra la diferencia:

div span{background:red}
div>span{background:green}

<div><span>abc</span><span>def<span>ghi</span></span></div>

Color de Fondo de abc y def será verde, pero ghi tendrá color de fondo rojo.

IMPORTANTE: Si cambia el orden de las reglas a:

div>span{background:green}
div span{background:red}

Todas las letras tendrán un fondo rojo, porque el selector descendiente también selecciona el secundario.

 21
Author: Ignas2526,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-12-24 11:36:48

Tenga en cuenta que el selector hijo no es compatible con Internet Explorer 6. (Si usa el selector en un selector jQuery/Prototype/YUI etc en lugar de en una hoja de estilo, todavía funciona)

 8
Author: rlovtang,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-07-25 14:53:20

En teoría: Child = > un descendiente inmediato de un antepasado (por ejemplo, Joe y su padre)

Descendant = > cualquier elemento que desciende de un ancestro en particular (por ejemplo, Joe y su tatarabuelo)

En la práctica: pruebe este HTML:

<div class="one">
  <span>Span 1.
    <span>Span 2.</span>
  </span>
</div>

<div class="two">
  <span>Span 1.
    <span>Span 2.</span>
  </span>
</div>

Con este CSS:

span { color: red; } 
div.one span { color: blue; } 
div.two > span { color: green; }

Http://jsfiddle.net/X343c/1 /

 7
Author: Snowcrash,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-05-22 22:52:06
div p 

Selecciona todos los elementos ' p 'donde el padre es un elemento' div '

div > p

Significa hijos inmediatos Selecciona todos los elementos ' p 'donde el padre es un elemento' div '

 2
Author: user3351229,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-04-09 05:18:27

La selección de CSS y la aplicación de estilo a un elemento en particular se pueden hacer a través del elemento dom [Ejemplo

Ejemplo

.a .b .c .d{
    background: #bdbdbd;
}
div>div>div>div:last-child{
    background: red;
}
<div class='a'>The first paragraph.
 <div class='b'>The second paragraph.
  <div class='c'>The third paragraph.
   <div class='d'>The fourth paragraph.</div>
   <div class='e'>The fourth paragraph.</div>
  </div>
 </div>
</div>
 -1
Author: Aravind Cheekkallur,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-07-21 07:01:54