Div + p (artı) ve div ~ p (tilde) seçicileri arasındaki fark


89

Yolu, W3Schools bunu öbekleri, aynı ses.

W3Schools'un CSS referansı

div + p
Tüm seçer <p>hemen sonra yerleştirilir elemanları <div>elemanları

div ~ p
Her seçer <p>bir tarafından öncesinde eleman <div>elemanı

Bir <p>öğenin bir öğeden hemen sonra <div>olması, <p>öğenin önünde bir <div>öğenin olduğu anlamına gelmez mi?

Her neyse, belirli bir öğenin hemen önüne yerleştirilmiş bir öğeyi seçebileceğim bir seçici arıyorum .


5
+acil yanındaki pelemanı ve ~bir bütün sonrakinin p(her sonrasında elemanları divelemanı)
vsync

2
yapamazsın before. imkansız. sadece javascript ile. beforeCSS'nizde hedeflemeniz gereken bir sınıf ve hepsini aramanız gerekecek .
vsync


3
Bkz bu görsel açıklama için
Marc B

2
Bu soruyla ilgili ilginç bir şey, daha önce sorulmamış olmasıdır. En azından SO'da benzer bir soru bulamadım.
Hashem Qolami

Yanıtlar:


121

Bitişik kardeş seçiciler X + Y

Bitişik kardeş seçiciler şu sözdizimine sahiptir: E1 + E2, burada E2, seçicinin konusudur. E1 ve E2, belge ağacında aynı ebeveyni paylaşırsa ve E1, öğe olmayan düğümleri (metin düğümleri ve yorumlar gibi) yok sayarak, E2'den hemen önce gelirse, seçici eşleşir.

ul + p {
   color: red;
}

Bu örnekte, yalnızca önceki öğeden hemen önce gelen öğeyi seçecektir. Bu durumda, yalnızca her ul'den sonraki ilk paragrafta kırmızı metin olur.

Genel kardeş seçiciler X ~ Y

Kombinatör, iki seçiciyi ayırır ve yalnızca ilkinden önce gelirse ikinci öğeyi eşleştirir ve her ikisi de ortak bir ebeveyni paylaşır.

ul ~ p {
   color: red;
}

Bu kardeş birleştirici X + Y'ye benzer, ancak daha az katıdır. Bitişik bir seçici (ul + p), yalnızca önceki seçiciden hemen önce gelen ilk öğeyi seçerken, bu daha genelleştirilmiştir. Yukarıdaki örneğimize başvurarak, bir ul izledikleri sürece herhangi bir p elemanını seçecektir.

Kaynak

code.tutsplus

Genel kardeş seçiciler MDN

Bitişik kardeş seçiciler w3


6
Bu cevap, eldeki belirli soruyu ele alma girişiminde bulunmayan başka bir makalenin alıntıından başka bir şey değildir. Verilen örnekler de soruyu ele almak için pek iyi bir iş çıkarmıyor.
BoltClock

1
@BoltClock teşekkürler, puanını anladım. Sizden her zaman geri bildirim almaktan memnuniyet duyarım. Ancak cevabımın OP'ye bu seçiciler arasındaki farkın ne olduğunu açıkladığını düşünüyorum.
Alex Char

Bu doğru. Soruyu tam olarak ele almasa da, iki seçici arasındaki farkı göstermek için makul bir iş çıkarıyor.
BoltClock

22

Bir <p>öğenin bir öğeden hemen sonra <div>olması, <p>öğenin önünde bir <div>öğenin olduğu anlamına gelmez mi?

Doğru. Başka bir deyişle, div + pbir olan öz alt kümesidir ait div ~ peski ile eşleşen bir şey olduğunu - Ayrıca zorunlu olarak, ikincisi tarafından eşleşti.

Arasındaki fark +ve ~olmasıdır ~sürece her ikisi de payı olarak aynı ebeveyn bakılmaksızın birinci elemanın kendi yakınlığı aşağıdaki tüm kardeşler eşleşir.

Bu noktaların her ikisi de, her bir kuralın farklı bir özelliği uyguladığı tek bir örnekle en kısa ve öz şekilde gösterilmiştir. Bildirim bu bir panında takip divhem kurallar uygulanır vardır:

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>

Her neyse, belirli bir öğenin hemen önüne yerleştirilmiş bir öğeyi seçebileceğim bir seçici arıyorum .

Maalesef henüz bir tane yok .


8

bu örneği düşünün:

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>


0

1) Bitişik Kardeş Seçiciler (S1 + S2)

Bitişik kardeş seçici, belirtilen başka bir öğenin hemen yanında bulunan belirli bir öğeyi seçmek için kullanılır. Her iki unsur da aynı seviyede olmalıdır.

div + p {
    color:red;
}

Bitişik Kardeş Seçiciler örneği

2) Genel Kardeş Seçiciler (S1 ~ S2)

Genel kardeş seçici, belirtilen başka bir öğenin tüm belirtilen kardeş öğelerini seçmek için kullanılır.

div ~ p {
   color:red;
}

Genel Kardeş Seçiciler örneği

Komşu Kardeş (S1 + S2) ve Genel Kardeş (S1 ~ S2) seçicileri:

Bitişik kardeş (S1 + S2) seçici, yalnızca yakın kardeş öğesini seçer, ancak genel kardeş (S1 ~ S2) seçici, başka bir belirtilen öğenin tüm kardeş öğelerini seçer. Her iki durumda da her iki eleman (S1 ve S2) aynı seviyede olmalıdır.

Kalan seçiciler burada açıklanmıştır: https://www.csssolid.com/35-css-selectors-to-remember.html

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.