La forma en que w3schools lo expresa , suenan igual.
div + p
Selecciona todos los<p>
elementos que se colocan inmediatamente después de los<div>
elementos.
div ~ p
Selecciona todos los<p>
elementos que están precedidos por un<div>
elemento.
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?
De todos modos, estoy buscando un selector donde pueda seleccionar un elemento que se coloca inmediatamente antes de un elemento dado.
css
css-selectors
user4055428
fuente
fuente
+
es el siguientep
elemento inmediato y~
son todos losp
elementos siguientes (después de cadadiv
elemento)before
. imposible. solo con javascript. tendrás que buscarlo y todos losbefore
que una clase debe apuntar en tu CSS.Respuestas:
Selectores de hermanos adyacentes X + Y
ul + p { color: red; }
Mostrar fragmento 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>
Selectores generales de hermanos X ~ Y
ul ~ p { color: red; }
Mostrar fragmento 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>
Fuente
code.tutsplus
Selectores generales de hermanos MDN
Selectores de hermanos adyacentes w3
fuente
Esto es correcto. En otras palabras,
div + p
es un subconjunto adecuado dediv ~ 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 inmediatamentediv
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>
Desafortunadamente, todavía no hay uno .
fuente
considere este ejemplo:
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>
fuente
1) Selectores de hermanos adyacentes (S1 + S2)
El selector de hermanos adyacentes se utiliza para seleccionar un elemento especificado que está inmediatamente al lado de otro elemento especificado. Ambos elementos deben estar en el mismo nivel.
div + p { color:red; }
Ejemplo de selectores de hermanos adyacentes
2) Selectores generales de hermanos (S1 ~ S2)
El selector general de hermanos se utiliza para seleccionar todos los elementos hermanos especificados de otro elemento especificado.
div ~ p { color:red; }
Ejemplo de selectores generales de hermanos
Selectores de hermano adyacente (S1 + S2) vs hermano general (S1 ~ S2):
El selector de hermanos adyacentes (S1 + S2) selecciona solo el elemento hermano inmediato, pero el selector de hermanos generales (S1 ~ S2) selecciona todos los elementos hermanos de otro elemento especificado. Ambos casos, ambos elementos (S1 y S2) deben estar en el mismo nivel.
Los selectores restantes se explican aquí: https://www.csssolid.com/35-css-selectors-to-remember.html
fuente