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 p
que segue imediatamente o div
tem 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óximop
elemento imediato e~
são todos os próximosp
elementos (após cadadiv
elemento)