Do jeito que w3schools as expressa , elas soam iguais.
div + p
Seleciona todos os<p>
elementos que são colocados imediatamente após os<div>
elementos
div ~ p
Seleciona todos os<p>
elementos que são precedidos por um<div>
elemento
Se um <p>
elemento está imediatamente após um <div>
elemento, isso não significa que o <p>
elemento é precedido por um <div>
elemento?
De qualquer forma, estou procurando um seletor onde posso selecionar um elemento que é colocado imediatamente antes de um determinado elemento.
css
css-selectors
user4055428
fonte
fonte
+
é o próximop
elemento imediato e~
são todos os próximosp
elementos (após cadadiv
elemento)before
. impossível. apenas com javascript. você terá que procurá-lo e todos osbefore
outros uma classe para direcionar em seu CSS.Respostas:
Seletores irmãos adjacentes X + Y
ul + p { color: red; }
Exibir trecho de código
ul + p { color: red; }
<div id="container"> <ul> <li>List Item</li> <li>List Item</li> <li>List Item</li> <li>List Item</li> </ul> <p>This will be red</p> <p>This will be black</p> <p>This will be black</p> </div>
Seletores irmãos gerais X ~ Y
ul ~ p { color: red; }
Exibir trecho de código
ul ~ p { color: red; }
<div id="container"> <ul> <li>List Item <ul> <li>Child</li> </ul> </li> <li>List Item</li> <li>List Item</li> <li>List Item</li> </ul> <p>This will be red.</p> <p>This will be red.</p> <p>This will be red.</p> <p>This will be red.</p> </div>
Fonte
code.tutsplus
Seletores irmãos gerais MDN
Seletores irmãos adjacentes w3
fonte
Isto está certo. Em outras palavras,
div + p
é um subconjunto apropriado dediv ~ 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 odiv
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>
Infelizmente, ainda não existe .
fonte
considere este exemplo:
p + p { /* the first p immediately after a preceding p */ color: red; } p ~ p { /* all p's after a preceding p */ font-weight: bold; }
<div> <p>1</p> <div>separator</div> <p>2</p> <!-- only ~ is applied here --> <p>3</p> <!-- both + and ~ are applied here --> </div>
fonte
1) Seletores de irmãos adjacentes (S1 + S2)
O seletor de irmão adjacente é usado para selecionar um elemento especificado que é imediato ao lado de outro elemento especificado. Ambos os elementos devem estar no mesmo nível.
div + p { color:red; }
Exemplo de seletores de irmãos adjacentes
2) Seletores gerais de irmãos (S1 ~ S2)
O seletor irmão geral é usado para selecionar todos os elementos irmãos especificados de outro elemento especificado.
div ~ p { color:red; }
Exemplo geral de seletores de irmãos
Seletores de Irmãos Adjacentes (S1 + S2) vs Irmãos Gerais (S1 ~ S2):
O seletor irmão adjacente (S1 + S2) seleciona o elemento irmão imediato apenas, mas o seletor irmão geral (S1 ~ S2) seleciona todos os elementos irmãos de outro elemento especificado. Ambos os casos, ambos os elementos (S1 e S2) devem estar no mesmo nível.
Os seletores restantes são explicados aqui: https://www.csssolid.com/35-css-selectors-to-remember.html
fonte