CSS: вибраний псевдо-клас, подібний до: перевірено, але для елементів <select>


86

Чи є спосіб стилізувати вибраний на даний момент <option>елемент в <select>елементі?

Тоді я міг би надати колір тла поточно вибраному елементу опції? Таким чином я можу стилізувати варіант, який зараз можна переглянути у закритому випадаючому списку.

Відповіді:


123

:checkedпсевдо-клас спочатку відноситься до таких елементів , які мають HTML4 selectedі checkedатрибути

Джерело: w3.org


Отже, цей CSS працює, хоча стилізувати його colorможливо не в кожному браузері:

option:checked { color: red; }

Приклад цього в дії, приховування вибраного елемента зі спадного списку.

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


Щоб також обрати вибраний параметр у закритому випадаючому списку, спробуйте змінити логіку:

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

4
Ви це перевірили? Здається, це не працює для мене на FF8. оновлення: воно не працює і в Chromium 15.
Brigand

1
@emmett Я теж перевірив це в Chrome 16. Як я вже говорив у своєму попередньому коментарі, він стилізує вибраний параметр у випадаючому списку, але не той, який знаходиться у закритій області перегляду.
Web_Designer

2
@Web_Designer Добре, я бачу проблему. Я відредагував свою відповідь за допомогою іншого (хиткого) рішення.
Emmett

прийнята відповідь не працює для мене в chrome. Ви можете протестувати тут: jsfiddle.net/hk4s0ech
Андре Шеньє

17

Насправді ви можете стилізувати лише кілька властивостей CSS на : модифіковані елементи параметрів. colorтеж не працює, background-colorале ви можете встановити a background-image.

Ви можете поєднати це з градієнтами, щоб зробити фокус.

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

Працює над gecko / webkit.


Прийнята відповідь не спрацювала для мене, але це рішення допомогло. Дякую!
Anthony Hilyard

Зверніть увагу, що ви також можете застосувати до нього фільтр так: Опція: перевірено {filter: відтінки сірого (1);} Це схоже на те, як сьогодні ви можете стилізувати прапорці та перемикачі в Chrome, щоб зробити їх не блакитними.
KS74

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.