CSS: pseudoclase seleccionada similar a: comprobada, pero para elementos <select>

86

¿Hay alguna forma de aplicar estilo al <option>elemento seleccionado actualmente en un <select>elemento?

Entonces, ¿podría dar un color de fondo al elemento de opción seleccionado actualmente? De esa manera, puedo diseñar la opción que se puede ver actualmente en el menú desplegable cerrado.

Diseñador web
fuente

Respuestas:

123

la :checkedpseudoclase se aplica inicialmente a los elementos que tienen HTML4 selectedy checkedatributos

Fuente: w3.org


Entonces, este CSS funciona, aunque el estilo colorno es posible en todos los navegadores:

option:checked { color: red; }

Un ejemplo de esto en acción, ocultando el elemento seleccionado actualmente de la lista desplegable.

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


Para diseñar también la opción seleccionada actualmente en el menú desplegable cerrado , puede intentar invertir la lógica:

select { color: red; }
option:not(:checked) { color: black; } /* or whatever your default style is */
Emmett
fuente
4
¿Lo probaste? No parece funcionar para mí en FF8. actualización: tampoco funciona en Chromium 15.
Brigand
1
@emmett Yo también lo verifiqué en Chrome 16. Como dije en mi comentario anterior, estiliza la opción seleccionada en la lista desplegable, pero no la del área visible cerrada.
Web_Designer
2
@Web_Designer Ok, veo el problema. Edité mi respuesta con otra solución (inestable).
Emmett
La respuesta aceptada no me funciona en Chrome. puede probar aquí: jsfiddle.net/hk4s0ech
Andre Chenier
17

En realidad, solo puede aplicar estilo a algunas propiedades CSS en : elementos de opción modificados . colortampoco funciona, background-colorpero puede configurar un background-image.

Puede combinar esto con degradados para hacer el truco.

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

Funciona en gecko / webkit.

Antwan
fuente
La respuesta aceptada no funcionó para mí, pero esta solución sí. ¡Gracias!
Anthony Hilyard
Tenga en cuenta que también puede aplicarle un filtro de la siguiente manera: Opción: comprobado {filtro: escala de grises (1);} Esto es similar a cómo hoy en día puede diseñar casillas de verificación y botones de radio en Chrome para que no sean azules.
KS74
3

Esto funcionó para mí:

select option {
   color: black;
}
select:not(:checked) {
   color: gray;
}
Neoweiter
fuente