<İnput type = “?” İçin CSS Seçici


105

CSS ile tüm girdileri türlerine göre hedeflemenin bir yolu var mı? Çeşitli devre dışı bırakılmış form öğelerinde kullandığım devre dışı bırakılmış bir sınıfım var ve metin kutuları için arka plan rengini ayarlıyorum, ancak onay kutularının bu rengi almasını istemiyorum.

Bunu ayrı sınıflarla yapabileceğimi biliyorum ama mümkünse CSS kullanmayı tercih ederim. Eminim bunu javascript'te ayarlayabilirim ama yine CSS arayabilirim.

IE7 + 'yı hedefliyorum. Bu yüzden CSS3'ü kullanabileceğimi sanmıyorum.

Düzenle

CSS3 ile buna benzer bir şey yapabilir miyim?

INPUT[type='text']:disabled sınıfımdan tamamen kurtulmam daha iyi olur ...

Düzenle

Tamam, yardım için teşekkürler! Yani burada herhangi bir sınıf ayarlamadan devre dışı bırakılan tüm metin kutularını ve alanları değiştiren bir seçici var, bu soruyu başlattığımda bunun mümkün olduğunu hiç düşünmemiştim ...

INPUT[disabled][type='text'], TEXTAREA[disabled]
{   
    background-color: Silver;
}

Bu, IE7'de çalışır


2
CSS öznitelik seçicileri hakkında bazı ayrıntılı bilgiler içeren bir makale yazdım .
Sarfraz

Yanıtlar:


155

Evet. IE7 +, öznitelik seçicilerini destekler:

input[type=radio]
input[type^=ra]
input[type*=d]
input[type$=io]

Belirli bir değere eşit, bununla başlayan, içeren veya biten bir değer içeren öznitelik türüne sahip öğe girişi.

Diğer güvenli (IE7 +) seçiciler şunlardır:

  • Ebeveyn> şunlara sahip çocuk: p > span { font-weight: bold; }
  • Başında ~ öğesi olan: span ~ span { color: blue; }

Hangisi <p><span/><span/></p>size etkili bir şekilde verir:

<p>
    <span style="font-weight: bold;">
    <span style="font-weight: bold; color: blue;">
</p>

Daha fazla okuma: quirksmode.com'da Tarayıcı CSS uyumluluğu

Herkesin bunun yapılamayacağını düşünmesine şaşırdım. CSS özellik seçicileri bir süredir buradaydı. Sanırım .css dosyalarımızı temizleme zamanımız geldi.


Tamam bunu denedim ama işe yaramadı, bu yüzden sözdizimimi bozmuş olmalıyım.
JoshBerke

Günümü düzelttin! Şimdi
haftamı

13
Maalesef yapamaz. IE6'yı dini görüşlerden desteklemeyi bıraktım ve hepimizin de öyle yapmasını önerdim. Bugün, kullanıcılara bilgisayarlarının ve gizliliklerinin
IE6'yı

1
Sanırım IE6'yı desteklemeye o kadar alıştım ki IE7'de de işe yaramayacağını varsaydım
TJ L

4
Keşke
IE6'yı

3

Ne yazık ki diğer afişler şey olmadığı doğrudur Kron düzeltilebilir olarak aslında ... sen senin IE7 ve sıkı doc ile Tamam, ama çoğumuz IE6 gereklerine JS veya bunun için sınıf başvuruları için azalır, ancak bir bir CSS2 özelliği, IE ^ h ^ h tarayıcılarından yeterli destek olmadan yalnızca bir tane.

Eksiksiz olarak, tür seçici, formun xpath'e benzerdir, [attribute=value]ancak birçok ilginç varyant mevcuttur. Bu olacak 's mevcuttur, iyi bir şey IE8 için kafanın içinde tutmak için ne zaman oldukça güçlü olması.


Daha güncel bir tarayıcı destek referansınız var mı? IE7 beta tabanlı bu
IE8'i

IE8 hala beta aşamasında, ancak tuhaf mod "evet" diyor: quirksmode.org/css/contents.html
annakata

Hala IE6'yı destekliyorum, sadece bu küçük görsel ince ayar eklemiyorum.
JoshBerke

yeterince adil, başlığa göre cevap vermek benim hatamdı, genel vakalara cevap verme eğilimindeyim - gerçekten soruları daha fazla
okumalıyım

1

Bunu jQuery ile yapabilirsiniz. Seçicilerini kullanarak tür gibi niteliklere göre seçim yapabilirsiniz. Ancak bu, kullanıcılarınızın Javascript'in açık olmasını ve indirmeleri için ek bir dosya olmasını gerektirir, ancak işe yararsa ...


0

Üzgünüm, kısa cevap hayır. CSS (2.1), bir DOM'un özelliklerini değil, yalnızca öğelerini işaretler. Her girdiye belirli bir sınıf uygulamanız gerekir.

Bummer biliyorum, çünkü bu inanılmaz derecede faydalı olurdu.

JavaScript yerine CSS'yi tercih edeceğinizi söylediğinizi biliyorum, ancak yine de jQuery kullanmayı düşünmelisiniz. Özelliklere dayalı olarak DOM öğelerine stil eklemenin çok temiz ve zarif bir yolunu sağlar.


jquery, bunu yapmanın yolu veya genel olarak JavaScript
TravisO

4
Afaict, bu cevap yanlıştır (CSS 2.1 kısmı): w3.org/TR/CSS21/selector.html#attribute-selectors . Değilse, lütfen cevabınızı netleştirin.
cic

1
Üzgünüm - çok haklısın. IE7'den en azını bekliyorum çünkü çoğu kez geliştiricilerin aynı anda IE6'yı desteklemesi gerekiyor. Soruyu daha dikkatli okumalı ve ödevimi yapmalıydım.
Phil.Wheeler
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.