CSS: seçili sözde sınıf şuna benzer: işaretlendi, ancak <select> öğeleri için


86

Bir öğedeki şu anda seçili <option>öğeyi biçimlendirmenin bir yolu var mı <select>?

Daha sonra seçili olan seçenek öğesine bir arka plan rengi verebilir miyim? Bu şekilde, şu anda kapalı açılır menüde görüntülenebilen seçeneğin stilini belirleyebilirim.

Yanıtlar:


123

:checkedSözde sınıf başlangıçta HTML4 sahip bu tür elemanların için geçerlidir selectedve checkedözelliklerini

Kaynak: w3.org


Bu CSS işe yarıyor, ancak stil colorher tarayıcıda mümkün olmasa da:

option:checked { color: red; }

Bunun bir örneği, şu anda seçili olan öğeyi açılır listeden gizleyerek.

option:checked { display:none; }
<select>
    <option>A</option>
    <option>B</option>
    <option>C</option>
</select>


Kapalı açılır menüde de o anda seçili olan seçeneği biçimlendirmek için mantığı tersine çevirmeyi deneyebilirsiniz:

select { color: red; }
option:not(:checked) { color: black; } /* or whatever your default style is */

5
Test ettin mi İşe görünmüyor FF8 benim için. güncelleme: Chromium 15'te de çalışmıyor.
Brigand

1
@emmett Chrome 16'da ben de kontrol ettim. Önceki yorumumda da söylediğim gibi, açılır listedeki seçili seçeneğe stil veriyor, kapalı görüntülenebilir alandaki seçeneğe değil.
Web_Designer

2
@Web_Designer Tamam, sorunu görüyorum. Cevabımı başka (riskli) çözümle düzenledim.
Emmett

kabul edilen cevap Chrome'da benim için çalışmıyor. burada test edebilirsiniz: jsfiddle.net/hk4s0ech
Andre Chenier

18

Aslında sadece birkaç CSS özelliğini biçimlendirebilirsiniz : değiştirilmiş seçenek öğeleri. colorçalışmıyor background-color, ancak bir background-image.

Hile yapmak için bunu gradyanlarla birleştirebilirsiniz.

option:hover,
option:focus,
option:active,
option:checked {
  background: linear-gradient(#5A2569, #5A2569);
}
<select>
  <option>A</option>
  <option>B</option>
  <option>C</option>
</select>

Geko / webkit üzerinde çalışır.


Kabul edilen cevap benim için işe yaramadı, ancak bu çözüm işe yaradı. Teşekkür ederim!
Anthony Hityard

Buna filtre uygulayabileceğinizi de unutmayın: Seçenek: işaretlendi {filter: grayscale (1);} Bu, günümüzde Chrome'daki onay kutularının ve radyo düğmelerinin stilini mavi olmayan hale getirmenize benzer.
KS74

3

Bu benim için çalıştı:

select option {
   color: black;
}
select:not(:checked) {
   color: gray;
}
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.