2012-02-16 12 views
6

He buscado en torno a una gran cantidad de personas y ver lo que sugiere que:¿Puedo colorear fondos de los elementos seleccionados en las opciones de selección de HTML con solo CSS?

::-moz-selection {background: red;} 
::selection {background: red; } 

..works para colorear el fondo de los elementos seleccionados actualmente en un elemento de selección múltiple formulario. (Nota: Me refiero a los elementos seleccionados, no a los elementos con foco).

No puedo hacer que esto funcione. ¿Lo estoy haciendo mal?

#dropdowns select::selection { 
    background: red; 
} 

Saludos:/

de configuración: El uso de Chrome para Mac

+0

similares: http://stackoverflow.com/questions/8619406/css-selected-pseudo-class-similar-to-checked-but-for-select-elements – BoltClock

Respuesta

23

En lugar de establecer una fondo de color también se puede establecer un gradiente lineal como fondo:

option:checked { 
    background: red linear-gradient(0deg, red 0%, red 100%); 
} 

Esto funciona en EI11 y la última Chrome y Firefox. Safari simplemente lo ignora. No probé IE/Edge.

Si desea establecer el color de fondo sólo para enfocada múltiples selecciona puede utilizar este fragmento:

select[multiple]:focus option:checked { 
    background: red linear-gradient(0deg, red 0%, red 100%); 
} 

Ver la demo completa aquí: http://codepen.io/marceltschopp/pen/PNyqKp

+2

Creo que esta debería ser la respuesta seleccionada. –

+0

¿Entonces, aparentemente, solo puede reemplazar el color de resaltado predeterminado con una imagen y no con un color diferente? Tiene sentido ... – BoltClock

+1

Esto funciona en Microsoft Edge. "IE/Edge" generalmente se refiere al modo Edge en IE11, que es lo mismo que IE11. Si desea hablar sobre el nuevo navegador, llámelo "Microsoft Edge" o "Edge" pero no lo llame IE. No es IE. – BoltClock

2

::selection no se aplica a las opciones seleccionadas; se aplica al texto resaltado. O malinterpretas sus sugerencias, o lo que dijeron es completamente erróneo.

Según this answer, se supone que debes ser capaz de utilizar option:checked para estilizar los elementos seleccionados:

#dropdowns option:checked { 
    background: red; 
} 

pero no he sido capaz de conseguir que funcione para <select> o <select multiple> elementos en this test fiddle .

+0

Hola, gracias editaste antes de poder decirte que no funcionó :) - ¡Wierd! Gracias por el violín.Veo que el tipo de [seleccionado] funciona si lo ve alterado aquí: http://jsfiddle.net/vzDvK/1/ - Resultados impares, ¿puede echar un vistazo, por favor? –

+2

@Mere Development: puede usar '[selected]' en lugar de ': checked', pero solo se aplica a las opciones que se seleccionen en el momento en que se cargó la página (ya que es un selector de atributos). Si cambia la selección, los estilos no se actualizarán. – BoltClock

+0

Ok gracias por seguir con esto! entonces, estamos diciendo que: marcado simplemente no funciona para las opciones por alguna razón (haciendo referencia a su jsfiddle original)? ¿Crees que es un error? –

0

el selector CSS adecuado para usted sería :checked

:: selección sólo para el texto que se ha destacado:

+0

Gracias por enlazar a documentos, parece que: marcado no funciona como se esperaba, comentaré arriba en un min. ¡Aclamaciones! –

0

me encontré con esto porque yo estaba teniendo el El mismo problema, encontré una solución extraña que parece funcionar al menos con Chrome y tal vez con otros. La solución fue usar un selector de atributos. Esto pareció funcionar con Chrome, lo probé en el violín js. Una nota al margen es que la caja no cambió inmediatamente de color a rojo de fondo, pero una vez que seleccioné otra opción pude ver claramente que efectivamente se había puesto roja. Puede verificarlo en el jsfiddle listado arriba.

http://jsfiddle.net/vzDvK/1/

#dropdowns option[selected] { 
    background: red; 
} 
Cuestiones relacionadas