Bir CSS öznitelik seçicide "i" ne anlama geliyor?


112

Google Chrome kullanıcı aracısı stil sayfasında aşağıdaki CSS seçiciyi buldum:

[type="checkbox" i]

Ne anlama igeliyor?


1
@Alexander O'Mara: Seçiciler seviye 4, CSS3'ün bir parçasıdır - sadece 3. seviyede başlayan bir modülün bir sonraki seviyesidir. "CSS4" yanlış bir isimdir.
BoltClock

2
@Alexander O'Mara: Metada gündeme geldiğini görmek isterim. Özellikle [css4] etiketinin kullanımını nasıl idare edebileceğimizi bilmek istiyorum - alabileceğim en sert önlem, onu [css3] ile eşanlamlı yapmaktır ve bu aslında yapılacak doğru şeydir.
BoltClock

1
@BoltClock Meta Sorusu geldi! BTW, cevabınızı bu soruyla birleştirmek hakkında soru sorduğunuzda, bilgiyi eklemek için buradaki soruyu / cevabı düzenlemeyi mi kastettiniz yoksa sihirli bir cevap-bir-başka-soruya-bir-cevap-hareket etme düğmesinden mi bahsediyorsunuz?
Alexander O'Mara

1
@Alexander O'Mara: Tek tek yanıtları değiştirmiyor, iki soruyu bütünüyle birleştiriyor. Bu yalnızca mod içeren bir işlevdir.
BoltClock

1
@TylerH Bu konuda Meta ile ilgili bir tartışmamız var . Oradaki tartışmaya eklemekten çekinmeyin.
Alexander O'Mara

Yanıtlar:


132

Yorumlarda belirtildiği gibi, büyük / küçük harfe duyarlı olmayan öznitelik eşleştirmesi içindir. Bu, CSS Seçiciler Seviye 4'teki yeni bir özelliktir.

Şu anda Chrome 49+, Firefox 47+, Safari 9+ ve Opera 37 + * 'da mevcuttur. Bundan önce, yalnızca Chrome 39'dan başlayarak Chrome kullanıcı aracısı stillerinde mevcuttu, ancak deneysel özellikler bayrağı ayarlanarak web içeriği için etkinleştirilebilirdi.

* Opera'nın önceki sürümleri de destekleyebilir.

Çalışma Örneği / Tarayıcı Testi:

[data-test] {
    width: 100px;
    height: 100px;
    margin: 4px;
}

[data-test="A"] {
    background: red;
}

[data-test="a" i] {
    background: green;
}
Green if supported, red if not:

<div data-test="A"></div>

Tarayıcı bu özelliği destekliyorsa yukarıdaki kare yeşil, desteklemiyorsa kırmızı olacaktır.


6
Öğrettiğiniz için teşekkürler! Yeni şapkanızın tadını çıkarın. Bu tür şeyler seçici kitaplıklarda çalışır mı? Ne tür bir tarayıcı desteği var?
Benjamin Gruenbaum

1
@BenjaminGruenbaum Görünüşe göre yalnızca Chrome kullanıcı aracısı stillerinde mevcut (bir web sitesinin CSS'si değil, en azından henüz değil). Herhangi bir resmi uyumluluk belgesi bulamadım.
Alexander O'Mara

(Sorular birleştirildiğine göre önceki yorumumu tekrar yayınlamak.) Bunun gibi yepyeni, deneysel standartların yetersiz şekilde belgelenmesi tamamen şaşırtıcı değil. Bununla birlikte, cevabım bununla ilgili daha fazla bilgi içeriyor, yani nasıl çalıştığı, neden kullanıldığı ve Chrome'da nasıl uygulandığı (soruda verildiği gibi).
BoltClock

Chrome, 49.0 sürümünde (şu anda Beta sürümünde), Firefox 47.0 sürümünde (Haziran 2016'da piyasaya sürülmesi planlanmıştır) bunun için destek ekleyecektir. Kaynak: developer.mozilla.org/en-US/docs/Web/CSS/…
Miscreant

1
@LWChris: Böyle bir tarayıcının gerçekten var olduğundan emin değilim. IE6, öznitelik seçicilerini hiç anlamıyor ve IE7, bunları özel veri öznitelikleriyle bile destekliyor.
BoltClock

36

Bu, Seçiciler 4'te tanıtılan öznitelik seçiciler için büyük / küçük harfe duyarlı olmayan bayraktır . Görünüşe göre bu özelliğin bir uygulamasını Chrome'a ​​Ağustos 2014 gibi erken bir zamanda gizlediler.

Özetle: bu bayrak, tarayıcıya, typebüyük / küçük harfe duyarlı olmayan bir şekilde öznitelik için ilgili değerleri eşleştirmesini söyler . HTML'deki öznitelik değerleri için varsayılan seçici eşleştirme davranışı büyük / küçük harfe duyarlıdır ; bu genellikle istenmeyen bir durumdur çünkü birçok öznitelik büyük / küçük harfe duyarlı olmayan değerlere sahip olacak şekilde tanımlanır ve seçicinizin büyük / küçük harfe bakılmaksızın tüm doğru öğeleri aldığından emin olmak istersiniz. typeBu tür bir özniteliğin bir örneğidir, çünkü bu, numaralandırılmış bir özniteliktir ve numaralandırılmış özniteliklerin büyük / küçük harfe duyarsız değerlere sahip olduğu söylenir .

İşte ilgili taahhütler:

  • 179370 - uygulama
  • 179401 - sorudaki ekran görüntüsünde gösterildiği gibi UA stil sayfalarında değişiklikler

Şu anda chrome: // flags / # enable-experimental-web-platform-features adresinde erişebileceğiniz "Deneysel Web Platformu özelliklerini etkinleştir" bayrağı içinde gizlendiğini unutmayın. Bu, özelliğin neden büyük ölçüde fark edilmediğini açıklayabilir - bu bayrağın arkasına gizlenmiş özellikler, yalnızca dahili olarak kullanılabilir ve etkinleştirilmedikçe halka açık kodda (yazar stil sayfaları gibi) kullanılamaz, çünkü bunlar deneyseldir ve bu nedenle üretimde kullanıma hazır değildir.

İşte kullanabileceğiniz bir test durumu - bayrak etkinleştirildiğinde ve devre dışı bırakıldığında sonuçları karşılaştırın:

span[data-foo="bar"] {
    color: red;
}

span[data-foo="bar" i] {
    color: green;
}
<span data-foo="bar">If all of this text is green,</span>
<span data-foo="Bar">your browser supports case-insensitive attribute selectors.</span>

typeHemen hemen her özellik ile kullanılabileceğini göstermek yerine özel bir veri özelliği kullandığımı unutmayın .

Bu yazı itibariyle başka herhangi bir uygulamadan haberdar değilim, ancak umarım diğer tarayıcılar yakında yetişir. Bu, standarda göre nispeten basit ancak son derece kullanışlı bir eklentidir ve gelecekte onu kullanabilmeyi dört gözle bekliyorum.


"O öğleden sonra" yorgunluğu yaşıyorum ... W3 spesifikasyonunu okuduktan sonra hala tam olarak anlamadım, bunun için css'de pratik bir gerçek yaşam kullanımı ne olurdu?
Matt

2
@Matt: Öznitelik seçici eşlemesi, HTML5'te belirtildiği gibi büyük / küçük harfe duyarlıdır; bu, çoğu durumda istenmeyen bir durumdur çünkü HTML5, belirli öznitelikler için büyük / küçük harfe duyarlı olmayan değerlere izin verir. Durumdan bağımsız olarak doğru öğeleri aldığınızdan emin olmak için bu bayrağı kullanabilirsiniz. Örneğin, ekran görüntüsünde input[type="search" i], gibi öğelerle eşleşecek şekilde aradığını görebilirsiniz <input type="SEARCH">.
BoltClock

1
Chromium Sürüm 43.0.2357.130 ve "Deneysel Web Platformu özelliklerini etkinleştir" seçeneğiyle çalıştığını doğrulayabilirim.
Robert Siemer
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.