Relaciones en un artículo
Introducción directa.
Párrafo directo después de la introducción.
Párrafo final del artículo.
Compara relaciones de profundidad y hermandad sobre tres escenarios HTML y comprueba exactamente qué elementos selecciona cada combinador.
.article pPreparando el escenario y sus resultados…
Selecciona los objetivos situados a cualquier profundidad dentro del contenedor.
<article class="article" aria-label="Estructura de un artículo sobre combinadores">
<h3>Relaciones en un artículo</h3>
<p class="lead">Introducción directa.</p>
<p>Párrafo directo después de la introducción.</p>
<aside class="note">
<p>Párrafo anidado dentro de una nota.</p>
</aside>
<p>Párrafo final del artículo.</p>
</article>.article p {
outline: 3px solid #f97316;
outline-offset: 3px;
background-color: color-mix(in oklch, #f97316 16%, transparent);
}Guía de combinadores CSS
Distingue profundidad, parentesco directo y orden entre hermanos sin confundir el elemento de referencia con el elemento seleccionado.
Un combinador conecta dos selectores compuestos y exige que sus elementos mantengan una relación concreta en el árbol del documento.
A combinator BEn A combinador B, la regla selecciona B. A aporta el contexto necesario para que B pueda coincidir.
A B · A > BEl espacio admite cualquier número de niveles; > exige que A sea el padre inmediato de B.
A + B · A ~ B+ exige el siguiente hermano elemento; ~ admite otros hermanos intermedios, pero nunca busca hacia atrás.
Compara cualquier descendiente con los hijos que dependen directamente de un contenedor.
E FSelecciona B cuando se encuentra en cualquier nivel dentro de un ancestro A.
Especificidad(0, 0, 2).article p<article class="article">
Coincide: <p>Coincide</p>
<section>
Coincide: <p>Coincide</p>
</section>
</article>
<p>No coincide</p>.menu a<nav class="menu">
Coincide: <a>Coincide</a>
<span>
Coincide: <a>Coincide</a>
</span>
</nav>
<a>No coincide</a>E > FSelecciona B únicamente cuando su padre elemento inmediato coincide con A.
Especificidad(0, 0, 2).article > p<article class="article">
Coincide: <p>Coincide</p>
<section>
<p>No coincide</p>
</section>
</article>.menu > a<nav class="menu">
Coincide: <a>Coincide</a>
<span>
<a>No coincide</a>
</span>
Coincide: <a>Coincide</a>
</nav>Compara el hermano elemento inmediato con todos los hermanos coincidentes que aparecen después.
E + FSelecciona B cuando comparte padre con A y es el siguiente hermano elemento.
Especificidad(0, 0, 2)h2 + p<section>
<h2>CSS</h2>
Coincide: <p>Coincide</p>
<p>No coincide</p>
</section>.current + a<nav>
<a class="current">Actual</a>
Coincide: <a>Coincide</a>
<span>
<a>No coincide</a>
</span>
</nav>E ~ FSelecciona cada B posterior a A cuando ambos comparten el mismo padre.
Especificidad(0, 0, 2)h2 ~ p<section>
<h2>CSS</h2>
Coincide: <p>Coincide</p>
<aside>Nota</aside>
Coincide: <p>Coincide</p>
</section>.current ~ a<nav>
<a class="current">Actual</a>
Coincide: <a>Coincide</a>
<span>
<a>No coincide</a>
</span>
Coincide: <a>Coincide</a>
</nav>