Если <p>элемент находится сразу после <div>элемента, разве это не означает, что <p>элементу предшествует <div>элемент?
Это верно. Другими словами, div + pэто собственное подмножество из div ~ p- ничего подкреплялись прежний также соответствует последним, по необходимости.
Разница между +и ~заключается в том, что ~соответствует всем следующим братьям и сестрам независимо от их близости от первого элемента, если они оба имеют одного и того же родителя.
Оба эти момента наиболее кратко проиллюстрированы на одном примере, где каждое правило применяет разные свойства. Обратите внимание, что к тому, pкоторый следует сразу за div, применяются оба правила:
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>
Во всяком случае, я ищу селектор, в котором я могу выбрать элемент, который находится непосредственно перед данным элементом.
К сожалению, пока нет .
+является непосредственным следующийpэлемент и~является все из следующихpэлементов (после каждогоdivэлемента)