Si un <p>
elemento está inmediatamente después de un <div>
elemento, ¿no significa eso que el <p>
elemento está precedido por un <div>
elemento?
Esto es correcto. En otras palabras, div + p
es un subconjunto adecuado de div ~ p
: cualquier cosa que coincida con el primero también se corresponde con el segundo, por necesidad.
La diferencia entre +
y ~
es que ~
coincide con todos los hermanos siguientes independientemente de su proximidad con el primer elemento, siempre que ambos compartan el mismo padre.
Ambos puntos se ilustran de manera más sucinta con un solo ejemplo, donde cada regla aplica una propiedad diferente. Observe que el p
que sigue inmediatamente div
tiene aplicadas ambas reglas:
div + p {
color: red;
}
div ~ p {
background-color: yellow;
}
<section>
<div>Div</div>
<p>Paragraph</p>
<p>Paragraph</p>
<p>Paragraph</p>
</section>
<section>
No div
<p>Paragraph</p>
<p>Paragraph</p>
<p>Paragraph</p>
</section>
De todos modos, estoy buscando un selector donde pueda seleccionar un elemento que se coloca inmediatamente antes de un elemento dado.
Desafortunadamente, todavía no hay uno .
+
es el siguientep
elemento inmediato y~
son todos losp
elementos siguientes (después de cadadiv
elemento)