Josué
Tengo un elemento de selección que tiene varios elementos. Quiero cambiar el color de su primer elemento, pero parece que el color solo se muestra cuando hace clic en el menú desplegable de selección. Lo que quiero es cambiar el color (como el gris) cuando se carga la página para que los usuarios puedan ver que el color de la primera opción es diferente.
Vea el ejemplo aquí…
http://jsbin.com/acucan/4/
CSS:
select{
width: 150px;
height: 30px;
padding: 5px;
color: green;
}
select option { color: black; }
select option:first-child{
color: green;
}
html:
<select>
<option>Item1</option>
<option>Item2</option>
<option>Item3</option>
</select>
Si el primer elemento se utilizará como marcador de posición (valor vacío) y su selección es required
entonces puedes usar el :invalid
pseudo-clase para apuntarlo.
select {
-webkit-appearance: menulist-button;
color: black;
}
select:invalid {
color: green;
}
<select required>
<option value="">Item1</option>
<option value="Item2">Item2</option>
<option value="Item3">Item3</option>
</select>
-
Esto también coloreó las opciones válidas en la lista para mí. Pude mantener el color esperado con un
select:invalid option:not(:disabled) { color: black }
regla– AlbinoSequía
3 jun 2019 a las 22:45
-
¡Esta es una forma realmente inteligente de resolver este problema! Gracias. funcionó perfectamente
– Melvin Idea
14 de agosto de 2019 a las 13:52
-
Por qué necesitamos
-webkit-appearance: menulist-button
?– Vitaly Zdanévich
29 sep 2019 a las 20:52
-
La apariencia predeterminada ignorará el cambio de color, ya que muestra el elemento con el estilo nativo de la plataforma.
– Óscar Barrett
1 de octubre de 2019 a las 1:53
mnsr
¿Qué pasa con esto?
select{
width: 150px;
height: 30px;
padding: 5px;
color: green;
}
select option { color: black; }
select option:first-child{
color: green;
}
<select>
<option>one</option>
<option>two</option>
</select>
-
¡Asombroso! Nunca pensé en eso, gracias 🙂
– Josué
12 de julio de 2013 a las 7:00
-
¿Cómo se cambia el color a negro una vez que se selecciona una opción?
– sQuijeW
17/10/2013 a las 17:45
-
todo
<option>
tener elcolor:black
para mí. (Cromo/Mac)– Ametralladora
31 de marzo de 2014 a las 12:07
-
Para que esto funcione en los navegadores Webkit en Mac (Chrome y Safari), deberá deshabilitar Chrome para seleccionar usando
-webkit-appearance:none
. Por supuesto, eso habilitará el estilo, pero también eliminará todo el resto del cromo seleccionado, por lo que también deberá cambiar el estilo de todo lo demás en el elemento. Violín: jsfiddle.net/wFP44/1– Ben Dyer
13/04/2014 a las 18:20
-
@sQuijeW Eso es exactamente lo que quiero saber. ¿Alguien tiene alguna pista sobre esto?
– JohnnyThan
19 dic 2017 a las 20:35
Para la Opción 1 utilizada como marcador de posición:
select:invalid { color:grey; }
Todas las demás opciones:
select:valid { color:black; }
-
La mejor respuesta hasta ahora.
– Awais Tariq
14 de octubre de 2020 a las 6:06
-
Este trabajo para mí. ¡La mejor respuesta!
– Gabriel Fagnani
15 de abril de 2022 a las 9:12
Aquí tienes una forma para que cuando selecciones una opción, se ponga negra. Cuando lo vuelve a cambiar al marcador de posición, vuelve al color del marcador de posición (en este caso, rojo).
http://jsfiddle.net/wFP44/166/
Requiere que las opciones tengan valores.
$('select').on('change', function() {
if ($(this).val()) {
return $(this).css('color', 'black');
} else {
return $(this).css('color', 'red');
}
});
select{
color: red;
}
select option { color: black; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select>
<option value="">Pick one...</option>
<option value="test1">Test 1</option>
<option value="test2">Test 2</option>
<option value="test3">Test 3</option>
</select>
Puedes hacer esto usando CSS: JSFiddle
HTML:
<select>
<option>Text 1</option>
<option>Text 2</option>
<option>Text 3</option>
</select>
CSS:
select option:first-child { color:red; }
O si es absolutamente necesario usar JavaScript (no recomendado para esto): JSFiddle
JavaScript:
$(function() {
$("select option:first-child").addClass("highlight");
});
CSS:
.highlight { color:red; }
-
Desafortunadamente, ninguno de estos funciona en Chrome 60 (PC), incluso con el modificador !important agregado
– Bill_VA
10 de agosto de 2017 a las 17:26
suave
Tenía muchas ganas de esto (¡los marcadores de posición deberían tener el mismo aspecto para los cuadros de texto que para los cuadros de selección!) Y el CSS directo no funcionaba en Chrome. Aquí esta lo que hice:
Primero asegúrese de que su etiqueta de selección tenga un .has-prompt
clase.
Luego inicialice esta clase en algún lugar de document.ready
.
# Adds a class to select boxes that have prompt currently selected.
# Allows for placeholder-like styling.
# Looks for has-prompt class on select tag.
Mess.Views.SelectPromptStyler = Backbone.View.extend
el: 'body'
initialize: ->
@$('select.has-prompt').trigger('change')
events:
'change select.has-prompt': 'changed'
changed: (e) ->
select = @$(e.currentTarget)
if select.find('option').first().is(':selected')
select.addClass('prompt-selected')
else
select.removeClass('prompt-selected')
Luego en CSS:
select.prompt-selected {
color: $placeholder-color;
}
-
Desafortunadamente, ninguno de estos funciona en Chrome 60 (PC), incluso con el modificador !important agregado
– Bill_VA
10 de agosto de 2017 a las 17:26
Flo Desarrollar
Este código funciona en Chromium y cambia el color a negro una vez que se selecciona una opción:
select {
appearance: none;
}
select:invalid {
color: green;
}
select option {
color: black;
}
No entiendo lo que estás tratando de lograr. Los elementos solo son visibles cuando el menú está abierto. Entonces, ¿qué hay de malo en su solución?
– Wottensprels
12 de julio de 2013 a las 6:48
Sprottenwels, lo siento, no aclaré la pregunta 🙁
– Josué
12 de julio de 2013 a las 7:02
Hola Máximo, lo siento. Hice mi mejor esfuerzo para buscar en este sitio… pero no pude encontrar la respuesta.
– Josué
12 de julio de 2013 a las 7:05
¿Responde esto a tu pregunta? ¿Cómo cambio el color del texto de la opción del cuadro de selección?
– Flamm
8 de julio de 2020 a las 12:47