Разница между селекторами div + p (plus) и div ~ p (tilde)
вот так w3schools фразы, они звучат одинаково.
div + p
Выбирает все<p>
элементы, которые помещаются сразу после<div>
элементов
div ~ p
Выбирает каждый<p>
элемент, которому предшествует<div>
элемент
если a <p>
элемент сразу после a <div>
элемент, разве это не означает, что <p>
элементу предшествует <div>
элемент?
во всяком случае, я ищу селектор, где я могу выбрать элемент, который находится место сразу до данного элемента.
3 ответа:
соседние селекторы братьев и сестер X + Y
смежные одноуровневые селекторы имеют следующий синтаксис: E1 + E2, где E2 является предметом селектора. Селектор соответствует, если E1 и E2 используйте один и тот же родительский элемент в дереве документов, и E1 сразу же предшествует Е2, игнорируя не-узловые элементы (такие как текстовые узлы и комментарии).
ul + p { color: red; }
в этом примере он будет выбирать только элемент, которому непосредственно предшествует по первому элементу. В этом дело в том, что только первый абзац после каждого ul будет иметь красный текст.
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>
общие селекторы братьев и сестер X ~ Y
комбинатор ~ разделяет два селектора и соответствует второму элемент только если ему предшествует первый, и оба имеют общий родитель.
ul ~ p { color: red; }
этот родственный комбинатор похож на X + Y, однако, это меньше строгий. В то время как соседний селектор (ul + p) будет выбирать только первый элемент, который непосредственно предшествует предыдущему селектору, этот более обобщенно. Он будет выбирать, ссылаясь на наш пример выше, любые элементы p, пока они следуют за ul.
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>
источник
если a
<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>
во всяком случае, я ищу селектор, где я могу выбрать элемент, который является местом немедленно до данного элемента.
к сожалению, нет еще.