Разница между селекторами 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>во всяком случае, я ищу селектор, где я могу выбрать элемент, который является местом немедленно до данного элемента.
к сожалению, нет еще.