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.

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 */

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.


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;
}
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.