Se um <p>elemento está imediatamente após um <div>elemento, isso não significa que o <p>elemento é precedido por um <div>elemento?
Isto está certo. Em outras palavras, div + pé um subconjunto apropriado de div ~ p- qualquer coisa combinada com a primeira também é combinada com a última, por necessidade.
A diferença entre +e ~é que ~corresponde a todos os irmãos seguintes, independentemente de sua proximidade do primeiro elemento, contanto que ambos compartilhem o mesmo pai.
Ambos os pontos são ilustrados de forma mais sucinta com um único exemplo, onde cada regra aplica uma propriedade diferente. Observe que aquele pque segue imediatamente o divtem as duas regras aplicadas:
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 qualquer forma, estou procurando um seletor onde posso selecionar um elemento que é colocado imediatamente antes de um determinado elemento.
Infelizmente, ainda não existe .
+é o próximopelemento imediato e~são todos os próximospelementos (após cadadivelemento)