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 + pes 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 pque sigue inmediatamente divtiene 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 siguientepelemento inmediato y~son todos lospelementos siguientes (después de cadadivelemento)