Em um formulário no qual estou trabalhando, o Chrome preenche automaticamente os campos de e-mail e senha. Tudo bem, no entanto, o Chrome altera a cor do plano de fundo para uma cor amarela pálida.
O design no qual estou trabalhando está usando texto claro em um fundo escuro, então isso realmente atrapalha a aparência do formulário - tenho caixas amarelas fortes e texto branco quase invisível. Uma vez que o campo está focado, os campos retornam ao normal.
É possível parar o Chrome de alterar a cor desses campos?
autocomplete
input
google-chrome
DisgruntledGoat
fonte
fonte
Respostas:
Isso funciona bem. Você pode alterar os estilos da caixa de entrada e os estilos de texto dentro da caixa de entrada:
Aqui você pode usar qualquer cor, por exemplo
white
,#DDD
,rgba(102, 163, 177, 0.45)
.Mas
transparent
não vai funcionar aqui.Além disso, você pode usar isso para alterar a cor do texto:
Conselho: Não use um raio de desfoque excessivo nas centenas ou milhares. Isso não tem benefício e pode colocar a carga do processador em dispositivos móveis mais fracos. (Também verdadeiro para sombras externas reais). Para uma caixa de entrada normal com 20px de altura, o 'raio de desfoque' de 30px cobrirá perfeitamente.
fonte
:-internal-autofill-previewed
e:-internal-autofill-selected
pseudoclasses em vez de-webkit-autofill
... No entanto, misteriosamente,-webkit-autofill
ainda funciona. Eu pessoalmente não precisava do!important
.As soluções anteriores de adicionar uma sombra de caixa funcionam bem para pessoas que precisam de um fundo de cor sólida. A outra solução de adicionar uma transição funciona, mas ter que definir uma duração / atraso significa que, em algum momento, ela poderá aparecer novamente.
Minha solução é usar quadros-chave, para que sempre mostre as cores de sua escolha.
Exemplo Codepen: https://codepen.io/-Steve-/pen/dwgxPB
fonte
color: inherit
Eu tenho uma solução melhor.
Definir o plano de fundo para outra cor como abaixo não resolveu o problema para mim porque eu precisava de um campo de entrada transparente
Então, tentei algumas outras coisas e vim com isso:
fonte
-webkit-text-fill-color: yellow !important;
cor do texto.display
. Fiddle - Check it outtransition-duration
ridiculamente alto, seria melhor definir otransition-delay
contrário. Dessa forma, você reduz ainda mais a possibilidade de alterações nas cores.transition
hack funcionará apenas se a entrada não for preenchida automaticamente com uma entrada padrão gravada pelo navegador, caso contrário, o fundo amarelo ainda estará lá.background-color
não funciona? O Chrome precisa corrigir isso!Esta é a minha solução, usei transição e atraso de transição, portanto, posso ter um plano de fundo transparente nos meus campos de entrada.
fonte
box-shadow
para validação"color 9999s ease-out, background-color 9999s ease-out";
não é exprssão valide. Eu usei o código então,-webkit-transition: background-color 9999s ease-out;
e-webkit-text-fill-color: #fff !important;
box-shadow
validação existente ? No meu caso, devido a essa regra css, minha sombra de caixa vermelha personalizada (que indica um erro de entrada) fica atrasada, fazendo com que o usuário acredite que a entrada mais recente é inválida quando na verdade é boa.Isso foi concebido desde que esse comportamento de coloração é do WebKit. Permite ao usuário entender que os dados foram pré-preenchidos. Bug 1334
Você pode desativar o preenchimento automático executando (ou no controle de formulário específico:
Ou você pode alterar a cor do preenchimento automático fazendo o seguinte:
Observe que há um bug sendo rastreado para que isso funcione novamente: http://code.google.com/p/chromium/issues/detail?id=46543
Este é um comportamento do WebKit.
fonte
!important
e (b) direcionada com um ID para maior especificidade. Parece que o Chrome sempre o substituirá. Remover o preenchimento automático parece funcionar, mas realmente não é o que eu quero fazer.autocomplete="off"
certamente criará problemas de acessibilidade. Por que essa resposta está marcada como correta de qualquer maneira?Uma solução possível para o momento é definir uma sombra interna "forte":
fonte
tente isso para ocultar o estilo de preenchimento automático
fonte
Todas as respostas acima funcionaram, mas tiveram seus defeitos. O código abaixo é uma amálgama de duas das respostas acima que funciona perfeitamente sem piscar.
fonte
SASS
fonte
Após 2 horas de pesquisa, parece que o Google ainda substitui a cor amarela de alguma forma, mas eu a solução. Está certo. funcionará também para focalizar, focalizar etc. tudo o que você precisa fazer é adicionar! importante a ele.
isso removerá completamente o amarelo dos campos de entrada
fonte
Adicionar um atraso de uma hora pausaria qualquer alteração de css no elemento de entrada.
Isso é mais melhor do que adicionar animação de transição ou sombra interna.
fonte
Além disso:
Você também pode querer adicionar
Caso contrário, quando você clicar na entrada, a cor amarela voltará. Para o foco, se você estiver usando o bootstrap, a segunda parte será para a borda destacando 0 0 8px rgba (82, 168, 236, 0.6);
De tal forma que parecerá com qualquer entrada de inicialização.
fonte
Eu tive um problema em que não podia usar o box-shadow porque precisava que o campo de entrada fosse transparente. É um pouco complicado, mas é um CSS puro. Defina a transição para um período muito longo.
fonte
transition-duration
ridiculamente alto, seria melhor definir otransition-delay
contrário. Dessa forma, você reduz ainda mais a possibilidade de alterações nas cores.Tente o seguinte: Mesmo que a resposta de Nathan-white acima, com pequenos ajustes.
fonte
Se você quiser manter intacta a funcionalidade de preenchimento automático, use um pouco de jQuery para remover o estilo do Chrome. Eu escrevi um pequeno post sobre isso aqui: http://www.benjaminmiles.com/2010/11/22/fixing-google-chromes-yellow-autocomplete-styles-with-jquery/
fonte
Eu desenvolvi outra solução usando JavaScript sem JQuery. Se você achar isso útil ou decidir publicar novamente minha solução, peço apenas que você inclua meu nome. Aproveitar. - Daniel Fairweather
Esse código é baseado no fato de que o Google Chrome remove o estilo do Webkit assim que o texto adicional é inserido. Simplesmente alterar o valor do campo de entrada não é suficiente, o Chrome deseja um evento. Ao focar em cada campo de entrada (texto, senha), podemos enviar um evento de teclado (a letra 'a') e, em seguida, definir o valor do texto para o estado anterior (o texto preenchido automaticamente). Lembre-se de que esse código será executado em todos os navegadores e verificará todos os campos de entrada da página da Web, ajustando-o de acordo com suas necessidades.
fonte
Eu tenho uma solução CSS pura que usa filtros CSS.
O filtro em escala de cinza substitui o amarelo por cinza e o brilho remove o cinza.
VER CODEPEN
fonte
Isso funcionará para entrada, área de texto e seleção nos estados normal, pairar, foco e ativo.
Aqui está a versão SCSS da solução acima para aqueles que estão trabalhando com o SASS / SCSS.
fonte
Para quem está usando o Compass:
fonte
Desisto!
Como não há como alterar a cor da entrada com o preenchimento automático, decido desativar todos eles com os navegadores jQuery for webkit. Como isso:
fonte
Eu tenho uma solução, se você deseja impedir o preenchimento automático do google chrome, mas é um pouco "facão", basta remover a classe que o google chrome adiciona a esses campos de entrada e defina o valor como "" se você não precisar mostrar armazenar dados após o carregamento.
fonte
A solução de Daniel Fairweather ( Removendo a cor de fundo da entrada para o preenchimento automático do Chrome? ) (Eu adoraria aprovar sua solução, mas ainda preciso de 15 representantes) funciona muito bem. Existe uma diferença realmente grande com a solução mais votada: você pode manter imagens de fundo! Mas uma pequena modificação (apenas verificação do Chrome)
E você precisa ter em mente que só funciona em campos visíveis !
Então, se você estiver usando $ .show () no seu formulário, precisará executar este código Após o evento show ()
Minha solução completa (eu tenho um botão de mostrar / ocultar para o formulário de login):
Desculpe novamente, eu preferiria que fosse um comentário.
Se você quiser, posso colocar um link para o site em que o usei.
fonte
e isso funcionou para mim (Chrome 76 testado)
fonte
Eu tentei quase todas as soluções acima. Nada funciona para mim. Finalmente trabalhou com esta solução. Espero que alguém ajude isso.
fonte
Graças Benjamin!
A solução Mootools é um pouco mais complicada, pois não consigo obter campos usando
$('input:-webkit-autofill')
. Portanto, o que usei é o seguinte:fonte
Nenhuma das soluções funcionou para mim, a sombra inserida não funcionará para mim porque as entradas têm um plano de fundo translúcido sobreposto ao plano de fundo da página.
Então, perguntei-me: "Como o Chrome determina o que deve ser preenchido automaticamente em uma determinada página?"
"Procura IDs de entrada, nomes de entrada? IDs de formulário? Ação de formulário?"
Através da minha experiência com o nome de usuário e as entradas de senha, só encontrei duas maneiras que levariam o Chrome a não encontrar os campos que deveriam ser preenchidos automaticamente:
1) Coloque a senha inserida antes da entrada de texto. 2) Dê a eles o mesmo nome e identificação ... ou nenhum nome e identificação.
Após o carregamento da página, com o javascript, você pode alterar dinamicamente a ordem das entradas na página ou atribuir dinamicamente o nome e o ID ...
E o Chrome não sabe o que foi atingido ... o preenchimento automático está quebrado!
Hack louco, eu sei. Mas está funcionando para mim.
Chrome 34.0.1847.116, OSX 10.7.5
fonte
Infelizmente, estritamente nenhuma das soluções acima funcionou para mim em 2016 (alguns anos após a pergunta)
Então aqui está a solução agressiva que eu uso:
Basicamente, ele exclui a tag enquanto salva o valor, recria-o e depois devolve o valor.
fonte
Eu uso isso. trabalhe para mim. remova o fundo amarelo do campo.
fonte
Como mencionado anteriormente, inserir -webkit-box-shadow para mim funciona melhor.
Também codifique o snippet para alterar a cor do texto:
fonte
Isso funcionou para mim:
fonte