“~” (Tilde / dalgalı / twiddle) CSS seçici ne anlama geliyor?


857

~Karakteri aramak kolay değil. Bazı CSS'lere bakıyordum ve bunu buldum

.check:checked ~ .content {
}

Bunun anlamı ne?


3
Kontrol demo anlayacaksın İşte CSS seçicileri bir listesi
Dipak

@TylerH, Stack Overflow yayınlarında çok yaygın kullanılan bir şey, lütfen sakin ol, daha kötü hissettirmek için tasarlanmamıştım.
Arsen Khachaturyan

@ArsenKhachaturyan Belki yanlış anlarsın; blok alıntı sözdizimi, bir kullanıcının bir şey (metin, resim, kod, vb.) Kendi işi veya sözcükleri değil, başka bir yerden kopyalandığı zaman bir alıntıyı belirtmek içindir. Tüm biçimlendirme gibi, anlamsal bir amacı vardır; willy-nilly eklenecek bir şey değil. Aynı şekilde, lütfen değil kelimelere rasgele cesur vurgulama ekleyin. Dikkatli bir şekilde vurgu için kullanılmalıdır.
TylerH

@TylerH İsminin "alıntı" olduğunu ve "alıntı" nın ne anlama geldiğini anlıyorum. Ancak bazen soruları sıradan metinden ayırmak istediğinizde yaptığım gibi bazı vurgulama tekniklerini deneyebilirsiniz. Kalın harflerle yazmak için, anahtar kelimeler veya iyi bilinen terimler gibi şeyleri vurgulamak istediğinizde kullanmak da açıktır. Genellikle insanların bilinmeyen nedenlerle cesur kullandıklarını sevmiyorum ama bazen insanların konuyla ilgili bilgileri kolayca bulmaları için kullanılabilir.
Arsen Khachaturyan

@ArsenKhachaturyan Lütfen bunu yapma. >içindir , sadece tırnak , bu edilmektedir asla başka bir amaç için kullanılmak üzere. Sorudaki rastgele teknolojilerin adlarını da cesurca yazmamalısınız. Hangi teknolojilerin alakalı olduğunu etiketler üzerinden görebiliriz.
meagar

Yanıtlar:


1370

~Seçici aslında Genel kardeş combinator (daha sonra yapılan-kardeş combinator olarak değiştirildi seçicileri Seviye 4 ):

Genel kardeş birleştirici, basit seçicilerin iki dizisini ayıran "tilde" (U + 007E, ~) karakterinden oluşur. İki sekans tarafından temsil edilen elemanlar, belge ağacında aynı ebeveyni paylaşır ve birinci sekans tarafından temsil edilen eleman, ikincisi tarafından temsil edilen elemandan önce (mutlaka gerekli değildir) önce gelir.

Aşağıdaki örneği düşünün:

.a ~ .b {
  background-color: powderblue;
}
<ul>
  <li class="b">1st</li>
  <li class="a">2nd</li>
  <li>3rd</li>
  <li class="b">4th</li>
  <li class="b">5th</li>
</ul>

.a ~ .b 4. ve 5. liste öğesiyle eşleşir, çünkü:

  • Are .belementler
  • Kardeşleri .a
  • Sonra .aHTML kaynak sırasına göre görünür .

Benzer şekilde, kardeş olan ve ondan sonra görünen .check:checked ~ .contenttüm .contentunsurlarla eşleşir .check:checked.


13
"Mutlaka hemen değil", bu açıklamanın kilit kısmıdır.
PanicBus

1
Aynı ana öğeye sahip tüm öğeler için bir seçici var mı?
Nick

1
@NickN. yani .parent > *?
Salman A

Tam olarak değil, ebeveyni bilmiyorsanız kullanabileceğiniz bir seçici olduğunu umuyordum.
Nick

7
@ NickN.Hiçbir yok. CSS, CSS ayrıştırıcısının bir eşleştirme yapmak için DOM'da hiçbir zaman geriye bakmadığı önerisiyle yapılır. Bir ana seçici bulunmamasının nedeni de budur.
yunzen

191

Ayrıca ailedeki diğer birleştiricileri kontrol etmek ve bu özel olana geri dönmek de iyidir.

  • ul li
  • ul > li
  • ul + ul
  • ul ~ ul

Örnek kontrol listesi:

  • ul li- içinde baktığımızda - seçer tümli unsurları (her yerde) içine yerleştirilmiş ul; Torun seçici
  • ul > li- İçeriye bakma - Yalnızca doğrudan li öğelerini seçer ul; sadece direkt çocukları seçecektir yani libir ul; Çocuk Seçici veya Çocuk birleştirici seçici
  • ul + ul- Dışa bakma - ulHemen ardından gelenleri seçer ul; İçeriye bakmıyor ama hemen takip eden elementi dışarıya bakıyor; Bitişik Kardeş Seçici
  • ul ~ ul- Dışa bakma - Nerede olursa olsun ultakip edenlerin tümünü seçer ul, ancak her ikisinin ulde aynı ebeveyni olmalıdır; Genel Kardeş Seçici

Burada baktığımız kişi Genel Kardeş Seçici


2
Bu en mantıklı. Layman'ın kurtarmaya yeniden terminolojisi. Şimdi teknik belgeleri okuyabilirim.
TheRealChx101

2
Sadece takip eden kardeşler için değil, TÜM kardeşler için bir kardeş seçici var mı?
Elijah Mock

1
@EliTheHuman, hayır. Daha fazla ayrıntı için lütfen bu SO yayınına bakın - stackoverflow.com/a/11813469/6830901
Lijo Joseph

174

Genel kardeş birleştirici

Genel kardeş birleştirici seçici, bitişik kardeş birleştirici seçiciye çok benzer. Fark, seçilen öğenin hemen ilk öğeyi başarması gerekmediği, ancak bundan sonra herhangi bir yerde görünebileceğidir.

Daha fazla bilgi


31

Öyle General sibling combinatorve çok iyi Salaman cevabı @ açıklanmıştır.

Yaptığım şey Adjacent sibling combinatorhangisi +ile yakından ilgili ~.

örnek olur

.a + .b {
  background-color: #ff0000;
}

<ul>
  <li class="a">1st</li>
  <li class="b">2nd</li>
  <li>3rd</li>
  <li class="b">4th</li>
  <li class="a">5th</li>
</ul>
  • Öğeleri eşleştirir .b
  • Bitişik .a
  • .aHTML'den sonra

Yukarıdaki örnekte 2., li4. değil.

   .a + .b {
     background-color: #ff0000;
   }
<ul>
  <li class="a">1st</li>
  <li class="b">2nd</li>
  <li>3rd</li>
  <li class="b">4th</li>
  <li class="a">5th</li>
</ul>

JSFiddle


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.