Chrome admite el atributo de marcador de posición en los input[type=text]
elementos (probablemente otros también lo hagan).
Pero lo siguiente CSS
no hace nada al valor del marcador de posición:
input[placeholder], [placeholder], *[placeholder] {
color: red !important;
}
<input type="text" placeholder="Value">
Value
seguirá siendo en grey
lugar de red
.
¿Hay alguna manera de cambiar el color del texto del marcador de posición?
css
html
placeholder
html-input
David Murdoch
fuente
fuente
<input>
etiqueta, como elinput
selector, pero muestra texto de marcador de posición en este momento. Tampoco coincide con el atributo del marcador de posición en sí.input
selector porque selecciona todos losinput
elementos.:placeholder-shown
solo selecciona losinput
elementos que actualmente muestran el marcador de posición, lo que le permite diseñar solo esos elementos y aplicar un estilo efectivo al texto del marcador de posición. ¿Qué estás tratando de decir?textarea
elementos que muestran texto de marcador de posición).Respuestas:
Implementación
Hay tres implementaciones diferentes: pseudo-elementos, pseudo-clases y nada.
::-webkit-input-placeholder
. [ Ref ]:-moz-placeholder
( un colon). [ Ref ]::-moz-placeholder
pero el selector anterior seguirá funcionando durante un tiempo. [ Ref ]:-ms-input-placeholder
. [ Ref ]::placeholder
[ Ref ]Internet Explorer 9 y versiones anteriores no admiten el
placeholder
atributo en absoluto, mientras que Opera 12 y versiones inferiores no admiten ningún selector CSS para marcadores de posición.La discusión sobre la mejor implementación aún continúa. Tenga en cuenta que los pseudoelementos actúan como elementos reales en Shadow DOM . A
padding
en uninput
no obtendrá el mismo color de fondo que el pseudo-elemento.Selectores CSS
Los agentes de usuario deben ignorar una regla con un selector desconocido. Ver Selectores Nivel 3 :
Por lo tanto, necesitamos reglas separadas para cada navegador. De lo contrario, todo el grupo sería ignorado por todos los navegadores.
Notas de uso
opacity: 1
aquí.em
y pruébelos con una configuración de tamaño de fuente mínimo grande. No olvide las traducciones: algunos idiomas necesitan más espacio para la misma palabra.placeholder
También se deben probar los navegadores con soporte HTML pero sin soporte CSS para eso (como Opera).input
tipos (email
,search
). Estos pueden afectar la representación de formas inesperadas. Usa las propiedades-webkit-appearance
y-moz-appearance
para cambiar eso. Ejemplo:fuente
*:-ms-input-placeholder
y:-ms-input-placeholder
por sí solo no funciona, peroINPUT:-ms-input-placeholder
sí. Impar.Esto dará estilo a todos
input
ytextarea
marcadores de posición.Nota importante: no agrupe estas reglas. En su lugar, cree una regla separada para cada selector (un selector no válido en un grupo invalida todo el grupo).
fuente
También es posible que desee diseñar áreas de texto:
fuente
Para los usuarios de Bootstrap y Less , hay un mixin .placeholder:
fuente
@input-color-placeholder
, que generalmente se encuentra en variables.lessAdemás de la respuesta de toscho, he notado algunas inconsistencias en el kit web entre Chrome 9-10 y Safari 5 con las propiedades CSS admitidas que vale la pena señalar.
Específicamente Chrome 9 y 10 no son compatibles
background-color
,border
,text-decoration
ytext-transform
cuando el estilo del marcador de posición.La comparación completa entre navegadores está aquí .
fuente
Para usuarios de Sass :
fuente
@content;
Esto funcionará bien. DEMO AQUÍ:
fuente
En Firefox e Internet Explorer, el color del texto de entrada normal anula la propiedad de color de los marcadores de posición. Entonces, necesitamos
fuente
Solución de navegador cruzado:
Crédito: David Walsh
fuente
Usa el nuevo
::placeholder
si usas autoprefixer .Tenga en cuenta que el mixin .placeholder de Bootstrap está en desuso a favor de esto.
Ejemplo:
Cuando se utiliza el corrector automático, lo anterior se convertirá al código correcto para todos los navegadores.
fuente
Ahora tenemos una forma estándar de aplicar CSS al marcador de posición de una entrada:
::placeholder
pseudo-elemento de este Borrador de Nivel 4 del Módulo CSS.fuente
Acabo de darme cuenta de algo para Mozilla Firefox 19+ que el navegador le da un valor de opacidad para el marcador de posición, por lo que el color no será lo que realmente desea.
Sobrescribo el
opacity
for 1, por lo que será bueno ir.fuente
No recuerdo dónde encontré este fragmento de código en Internet (no fue escrito por mí, no recuerdo dónde lo encontré ni quién lo escribió).
Simplemente cargue este código JavaScript y luego edite su marcador de posición con CSS llamando a esta regla:
fuente
Creo que este código funcionará porque solo se necesita un marcador de posición para el texto de tipo de entrada. Entonces, esta línea CSS será suficiente para su necesidad:
fuente
::placeholder
úselas junto con el corrector automático.Para los usuarios de Bootstrap , si está utilizando
class="form-control"
, puede haber un problema de especificidad CSS. Deberías tener una prioridad más alta:O si está utilizando Less :
fuente
Si está utilizando Bootstrap y no pudo hacer que esto funcione, entonces probablemente se haya perdido el hecho de que Bootstrap mismo agrega estos selectores. Estamos hablando de Bootstrap v3.3.
Si está intentando cambiar el marcador de posición dentro de una clase CSS .form-control , debe anularlo de esta manera:
fuente
Este código corto y limpio:
fuente
Qué tal esto
Sin CSS ni marcador de posición, pero obtienes la misma funcionalidad.
fuente
<input type="text" value="placeholder text" onfocus="if(!this.haswriting){this.style.color='#000'; this.value='';}" onblur="if(!this.value){this.style.color='#f00'; this.value='placeholder text'; this.haswriting=false;}else{this.haswriting=true};" style="color: #f00;"/>
<form>
con esta entrada, el texto del marcador de posición se enviará al servidor. He visto que muchos sitios hacen esto mal.He intentado todas las combinaciones aquí para cambiar el color, en mi plataforma móvil, y finalmente fue:
que hizo el truco.
fuente
This property allows you to specify a fill color for text. If it is not set, then the color property will be used to do the fill.
Me parece que tienes alguna otra regla CSS que establece lacolor
propiedad.Para usuarios de SASS / SCSS que usan Bourbon , tiene una función incorporada.
Salida CSS, también puede tomar esta porción y pegarla en su código.
fuente
pruebe este código para diferentes elementos de entrada diferentes estilos
Ejemplo 1:
ejemplo 2:
fuente
Aquí hay un ejemplo más:
fuente
Agregar una posibilidad real muy agradable y simple: ¡ filtros css !
Dará estilo a todo, incluido el marcador de posición.
Lo siguiente establecerá ambas entradas en la misma paleta, utilizando el filtro de tono para el cambio de color. Se rinde muy bien ahora en los navegadores (excepto es decir ...)
Para permitir que los usuarios lo cambien dinámicamente, utilizando un color de tipo de entrada para los cambios, o para encontrar matices, consulte este fragmento:
De: https://codepen.io/Nico_KraZhtest/pen/bWExEB
Documentos de filtros CSS: https://developer.mozilla.org/en-US/docs/Web/CSS/filter
fuente
De acuerdo, los marcadores de posición se comportan de manera diferente en diferentes navegadores, por lo que debe usar el prefijo del navegador en su CSS para hacerlos idénticos, por ejemplo, Firefox le da una transparencia al marcador de posición de forma predeterminada, por lo que debe agregar opacidad 1 a su CSS, más el color, no es Una gran preocupación la mayoría de las veces, pero es bueno que sean consistentes:
fuente
Puede cambiar el color del marcador de posición de una entrada HTML5 con CSS. Si por casualidad, su conflicto CSS, esta nota de código funciona, puede usar (! Importante) como a continuación.
Espero que esto ayude.
fuente
Puede usar esto para entrada y estilo de enfoque:
fuente
La forma más fácil sería:
fuente
Brújula tiene una mezcla para esto fuera de la caja.
Toma tu ejemplo:
Y en SCSS usando brújula:
Consulte los documentos para el mixin de entrada-marcador de posición.
fuente
Aquí está la solución con selectores CSS
:: - webkit-input-placeholder.
pseudoclase:: -moz-placeholder (un colon).
Mozilla Firefox 19+ está utilizando un pseudo-elemento:
:: - moz-placeholder, pero el selector anterior seguirá funcionando por un tiempo.
pseudoclase:: -ms-input-placeholder.
fuente
Una parte de HTML:
Voy a mostrar cómo cambiar el color de expresión de 'Ingresar oración' por CSS:
fuente