En un formulario en el que estoy trabajando, Chrome completa automáticamente los campos de correo electrónico y contraseña. Esto está bien, sin embargo, Chrome cambia el color de fondo a un color amarillo pálido.
El diseño en el que estoy trabajando utiliza texto claro sobre un fondo oscuro, por lo que esto realmente desordena el aspecto del formulario: tengo cuadros amarillos y texto blanco casi invisible. Una vez que el campo está enfocado, los campos vuelven a la normalidad.
¿Es posible evitar que Chrome cambie el color de estos campos?
autocomplete
input
google-chrome
Cabra descontento
fuente
fuente
Respuestas:
Esto funciona bien, puede cambiar los estilos del cuadro de entrada, así como los estilos de texto dentro del cuadro de entrada:
Aquí se puede utilizar cualquier color, por ejemplo
white
,#DDD
,rgba(102, 163, 177, 0.45)
.Pero
transparent
no funcionará aquí.Además, puede usar esto para cambiar el color del texto:
Consejo: No use un radio de desenfoque excesivo en cientos o miles. Esto no tiene ningún beneficio y podría poner la carga del procesador en dispositivos móviles más débiles. (También es cierto para sombras reales, exteriores). Para un cuadro de entrada normal de 20 píxeles de altura, el "radio de desenfoque" de 30 píxeles lo cubrirá perfectamente.
fuente
:-internal-autofill-previewed
y:-internal-autofill-selected
pseudoclases en lugar de-webkit-autofill
... Misteriosamente, sin embargo,-webkit-autofill
todavía funciona. Yo personalmente no necesitaba el!important
.Las soluciones anteriores de agregar un cuadro de sombra funcionan bien para las personas que necesitan un fondo de color sólido. La otra solución de agregar una transición funciona, pero tener que establecer una duración / retraso significará que en algún momento puede volver a aparecer.
Mi solución es usar fotogramas clave en su lugar, de esa manera siempre mostrará los colores de su elección.
Ejemplo de Codepen: https://codepen.io/-Steve-/pen/dwgxPB
fuente
color: inherit
Tengo una mejor solucion.
Establecer el fondo en otro color como el siguiente no me resolvió el problema porque necesitaba un campo de entrada transparente
Así que probé algunas otras cosas y se me ocurrió esto:
fuente
-webkit-text-fill-color: yellow !important;
color del texto.display
. Fiddle - Compruébalotransition-duration
ridículamente alto, sería mejor establecer eltransition-delay
lugar. De esa manera, reduce aún más la posibilidad de cualquier cambio en los colores.transition
hack funcionará solo si la entrada no se llena automáticamente con una entrada predeterminada registrada por el navegador, de lo contrario, el fondo amarillo seguirá allí.background-color
no funciona? ¡Chrome necesita arreglar esto!Esta es mi solución, utilicé la transición y el retraso de transición, por lo tanto, puedo tener un fondo transparente en mis campos de entrada.
fuente
box-shadow
para la validación"color 9999s ease-out, background-color 9999s ease-out";
que no es una expulsión válida.-webkit-transition: background-color 9999s ease-out;
-webkit-text-fill-color: #fff !important;
box-shadow
validación existente ? En mi caso, debido a esta regla CSS, mi sombra de cuadro rojo personalizado (que indica un error de entrada) se retrasa, lo que hace que el usuario crea que la entrada más reciente no es válida cuando de hecho es buena.Esto ha sido diseñado ya que este comportamiento de coloración ha sido de WebKit. Permite al usuario comprender que los datos se han completado previamente. Bug 1334
Puede desactivar el autocompletado haciendo (o en el control de formulario específico:
O puede cambiar el color del autocompletado haciendo:
Tenga en cuenta que se está rastreando un error para que esto funcione de nuevo: http://code.google.com/p/chromium/issues/detail?id=46543
Este es un comportamiento de WebKit.
fuente
!important
y (b) dirigido con una ID para mayor especificidad. Parece que Chrome siempre lo va a anular. Eliminar el autocompletado parece funcionar, pero en realidad no es lo que quiero hacer.autocomplete="off"
ciertamente planteará problemas de accesibilidad. ¿Por qué esta respuesta está marcada como correcta de todos modos?Una posible solución por el momento es establecer una sombra interior "fuerte":
fuente
prueba esto para ocultar el estilo de autocompletar
fuente
Todas las respuestas anteriores funcionaron pero tenían sus fallas. El siguiente código es una amalgama de dos de las respuestas anteriores que funciona a la perfección sin parpadear.
fuente
HABLAR CON DESCARO A
fuente
Después de 2 horas de búsqueda, parece que Google todavía anula el color amarillo de alguna manera, pero busqué la solución. Así es. También funcionará para el desplazamiento, enfoque, etc. todo lo que tienes que hacer es agregar! importante para ello.
esto eliminará completamente el amarillo de los campos de entrada
fuente
Agregar un retraso de una hora pausaría cualquier cambio de CSS en el elemento de entrada.
Esto es más mejor que agregar animación de transición o sombra interna.
fuente
Además de esto:
Es posible que también desee agregar
De lo contrario, cuando haga clic en la entrada, el color amarillo volverá. Para el enfoque, si está usando bootstrap, la segunda parte es para el borde resaltado 0 0 8px rgba (82, 168, 236, 0.6);
De tal manera que se verá como cualquier entrada de bootstrap.
fuente
Tuve un problema en el que no podía usar box-shadow porque necesitaba que el campo de entrada fuera transparente. Es un truco pero CSS puro. Establezca la transición a un período de tiempo muy largo.
fuente
transition-duration
ridículamente alto, sería mejor establecer eltransition-delay
lugar. De esa manera, reduce aún más la posibilidad de cualquier cambio en los colores.Pruebe esto: igual que la respuesta @ Nathan-white anterior con pequeños ajustes.
fuente
Si desea mantener intacta la funcionalidad de autocompletar, puede usar un poco de jQuery para eliminar el estilo de Chrome. Escribí una breve publicación al respecto aquí: http://www.benjaminmiles.com/2010/11/22/fixing-google-chromes-yellow-autocomplete-styles-with-jquery/
fuente
He desarrollado otra solución usando JavaScript sin JQuery. Si le resulta útil o decide volver a publicar mi solución, solo le pido que incluya mi nombre. Disfrutar. - Daniel Fairweather
Este código se basa en el hecho de que Google Chrome elimina el estilo Webkit tan pronto como se ingresa texto adicional. Simplemente cambiar el valor del campo de entrada no es suficiente, Chrome quiere un evento. Al centrarnos en cada campo de entrada (texto, contraseña), podemos enviar un evento de teclado (la letra 'a') y luego establecer el valor del texto en su estado anterior (el texto autocompletado). Tenga en cuenta que este código se ejecutará en cada navegador y verificará cada campo de entrada dentro de la página web, ajustándolo de acuerdo a sus necesidades.
fuente
Tengo una solución CSS pura que usa filtros CSS.
El filtro de escala de grises reemplaza el amarillo con el gris, luego el brillo elimina el gris.
VER CODEPEN
fuente
Esto funcionará para entrada, área de texto y selección en estado normal, flotante, de enfoque y activo.
Aquí está la versión SCSS de la solución anterior para aquellos que trabajan con SASS / SCSS.
fuente
Para aquellos que usan Compass:
fuente
¡Me rindo!
Como no hay forma de cambiar el color de la entrada con autocompletar, decido desactivarlos todos con jQuery para los navegadores webkit. Me gusta esto:
fuente
Tengo una solución si desea evitar que el autocompletado de google chrome pero sea un poco "machete", simplemente elimine la clase que google chrome agrega a esos campos de entrada y establezca el valor en "" si no necesita mostrar almacenar datos después de la carga.
fuente
La solución de Daniel Fairweather (¿ Eliminar el color de fondo de entrada para el autocompletado de Chrome? ) (Me encantaría votar su solución, pero aún necesito 15 repeticiones) funciona muy bien. Hay una gran diferencia con la solución más votada: ¡puedes guardar imágenes de fondo! Pero una pequeña modificación (solo verificación de Chrome)
Y debes tener en cuenta que SOLO funciona en campos visibles !
Entonces, si está utilizando $ .show () para su formulario, debe ejecutar este código después del evento show ()
Mi solución completa (tengo botones de mostrar / ocultar para el formulario de inicio de sesión):
Lo siento nuevamente, preferiría que fuera un comentario.
Si lo desea, puedo poner un enlace al sitio donde lo usé.
fuente
y esto funcionó para mí (Chrome 76 probado)
fuente
Probé casi todas las soluciones anteriores. Nada me funciona. Finalmente trabajé con esta solución. Espero que alguien ayude a esto.
fuente
Gracias Benjamin!
La solución Mootools es un poco más complicada, ya que no puedo obtener campos usando
$('input:-webkit-autofill')
, así que lo que he usado es lo siguiente:fuente
Ninguna de las soluciones funcionó para mí, la sombra insertada no funcionará para mí porque las entradas tienen un fondo translúcido superpuesto sobre el fondo de la página.
Así que me pregunté: "¿Cómo determina Chrome qué debe rellenarse automáticamente en una página determinada?"
"¿Busca ID de entrada, nombres de entrada? ¿ID de formulario? ¿Acción de formulario?"
A través de mi experimentación con el nombre de usuario y las entradas de contraseña, solo encontré dos formas que provocarían que Chrome no pudiera encontrar los campos que deberían rellenarse automáticamente:
1) Coloque la contraseña ingresada antes que la entrada de texto. 2) Déles el mismo nombre e identificación ... o ningún nombre e identificación en absoluto.
Después de que se cargue la página, con javascript puede cambiar dinámicamente el orden de las entradas en la página, o dinámicamente darles su nombre e identificación ...
Y Chrome no sabe qué lo golpeó ... ¡el autocompletado está roto!
Hack loco, lo sé. Pero me está funcionando.
Chrome 34.0.1847.116, OSX 10.7.5
fuente
Desafortunadamente, ninguna de las soluciones anteriores funcionó para mí en 2016 (un par de años después de la pregunta)
Así que aquí está la solución agresiva que uso:
Básicamente, elimina la etiqueta mientras guarda el valor y lo vuelve a crear, luego vuelve a colocar el valor.
fuente
yo uso esto. trabaja para mi. eliminar el fondo amarillo del campo.
fuente
Como se mencionó anteriormente, la inserción -webkit-box-shadow para mí funciona mejor.
También fragmento de código para cambiar el color del texto:
fuente
Esto funcionó para mí:
fuente