O Chrome suporta o atributo placeholder nos input[type=text]
elementos (outros provavelmente também o fazem).
Mas o seguinte CSS
não faz nada com o valor do espaço reservado:
input[placeholder], [placeholder], *[placeholder] {
color: red !important;
}
<input type="text" placeholder="Value">
Value
ainda permanecerá em grey
vez de red
.
Existe uma maneira de alterar a cor do texto do espaço reservado?
css
html
placeholder
html-input
David Murdoch
fonte
fonte
<input>
tag, como oinput
seletor, mas mostra o texto do espaço reservado agora. Também não corresponde ao próprio atributo de espaço reservado.input
seletor porque seleciona todos osinput
elementos.:placeholder-shown
somente selecionainput
elementos que estão atualmente mostrando o espaço reservado, permitindo que você estilize somente esses elementos e efetivamente estilize o texto do espaço reservado. O que você está tentando dizer?textarea
elementos que estão mostrando texto do espaço reservado.)Respostas:
Implementação
Existem três implementações diferentes: pseudoelementos, pseudoclasses e nada.
::-webkit-input-placeholder
. [ Ref ]:-moz-placeholder
( um cólon). [ Ref ]::-moz-placeholder
mas o seletor antigo ainda funcionará por um tempo. [ Ref ]:-ms-input-placeholder
. [ Ref ]::placeholder
[ Ref ]O Internet Explorer 9 e inferior não suportam o
placeholder
atributo, enquanto o Opera 12 e inferior não suportam nenhum seletor CSS para espaços reservados.A discussão sobre a melhor implementação ainda está em andamento. Observe que os pseudoelementos agem como elementos reais no DOM da sombra . A
padding
em uminput
não terá a mesma cor de fundo do pseudo-elemento.Seletores CSS
Os agentes do usuário são obrigados a ignorar uma regra com um seletor desconhecido. Consulte Seletores Nível 3 :
Portanto, precisamos de regras separadas para cada navegador. Caso contrário, o grupo inteiro seria ignorado por todos os navegadores.
Notas de uso
opacity: 1
aqui.em
e teste-os com grandes configurações de tamanho mínimo de fonte. Não se esqueça das traduções: alguns idiomas precisam de mais espaço para a mesma palavra.placeholder
mas sem suporte a CSS para isso (como o Opera) também devem ser testados.input
tipos (email
,search
). Isso pode afetar a renderização de maneiras inesperadas. Use as propriedades-webkit-appearance
e-moz-appearance
para mudar isso. Exemplo:fonte
*:-ms-input-placeholder
e:-ms-input-placeholder
por si só não funciona, masINPUT:-ms-input-placeholder
funciona. Ímpar.Isso estilizará todos
input
etextarea
espaços reservados.Nota importante: Não agrupe essas regras. Em vez disso, faça uma regra separada para cada seletor (um seletor inválido em um grupo torna o grupo inteiro inválido).
fonte
Você também pode querer estilizar áreas de texto:
fonte
Para usuários de Bootstrap e Menos , existe um mixplace .placeholder:
fonte
@input-color-placeholder
- geralmente encontrada em variables.lessAlém da resposta de toscho, notei algumas inconsistências entre os kits da web entre o Chrome 9-10 e o Safari 5 com as propriedades CSS suportadas que merecem destaque.
Especificamente Chrome 9 e 10 não suportam
background-color
,border
,text-decoration
etext-transform
ao denominar o espaço reservado.A comparação completa entre navegadores é aqui .
fonte
Para usuários do Sass :
fonte
@content;
Isso vai funcionar bem. DEMO AQUI:
fonte
No Firefox e no Internet Explorer, a cor normal do texto de entrada substitui a propriedade de cor dos espaços reservados. Então, precisamos
fonte
Solução entre navegadores:
Crédito: David Walsh
fonte
Use o novo
::placeholder
se você usar o autoprefixer .Observe que o .placeholder mixin do Bootstrap foi descontinuado em favor disso.
Exemplo:
Ao usar o autoprefixer, o código acima será convertido no código correto para todos os navegadores.
fonte
Agora, temos uma maneira padrão de aplicar CSS ao espaço reservado de uma entrada:
::placeholder
pseudoelemento deste rascunho de nível 4 do módulo CSS.fonte
Acabei de perceber algo para o Mozilla Firefox 19+ que o navegador fornece um valor de opacidade para o espaço reservado, para que a cor não seja o que você realmente deseja.
Eu sobrescrevo o
opacity
for 1, então será bom ir.fonte
Não lembro onde encontrei esse trecho de código na Internet (não foi escrito por mim, não lembro onde o encontrei, nem quem o escreveu).
Basta carregar esse código JavaScript e editar seu espaço reservado com CSS chamando esta regra:
fonte
Eu acho que esse código funcionará porque um espaço reservado é necessário apenas para o texto do tipo de entrada. Portanto, este CSS de uma linha será suficiente para sua necessidade:
fonte
::placeholder
junto com o autoprefixer.Para usuários do Bootstrap , se você estiver usando
class="form-control"
, pode haver um problema de especificidade de CSS. Você deve ter uma prioridade mais alta:Ou se você estiver usando Menos :
fonte
Se você estiver usando o Bootstrap e não conseguiu fazer isso funcionar, provavelmente perdeu o fato de o próprio Bootstrap adicionar esses seletores. Estamos falando do Bootstrap v3.3.
Se você estiver tentando alterar o espaço reservado dentro de uma classe CSS .form-control , substitua-o assim:
fonte
Este código curto e limpo:
fonte
Que tal agora
Sem CSS ou espaço reservado, mas você obtém a mesma funcionalidade.
fonte
<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>
mensagem com essa entrada, o texto do espaço reservado será enviado ao servidor. Eu já vi tantos sites fazendo isso errado.Eu tentei todas as combinações aqui para mudar a cor, na minha plataforma móvel, e eventualmente foi:
qual fez o truque.
fonte
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.
Parece-me que você tem alguma outra regra CSS que está definindo acolor
propriedade.Para usuários do SASS / SCSS usando o Bourbon , ele possui uma função integrada.
Saída CSS, você também pode pegar essa parte e colar no seu código.
fonte
tente este código para diferentes elementos de entrada e estilos diferentes
Exemplo 1:
exemplo 2:
fonte
Aqui está mais um exemplo:
fonte
Adicionando uma possibilidade muito agradável e simples: filtros css !
Ele estilizará tudo, incluindo o espaço reservado.
A seguir, as duas entradas serão definidas na mesma paleta, usando o filtro de matiz para alteração de cor. Agora é renderizado muito bem em navegadores (exceto ...)
Para permitir que os usuários o alterem dinamicamente, usando uma cor do tipo de entrada para alterações ou para encontrar nuances, confira este trecho:
De: https://codepen.io/Nico_KraZhtest/pen/bWExEB
Documentos de filtros de CSS: https://developer.mozilla.org/en-US/docs/Web/CSS/filter
fonte
OK, os espaços reservados se comportam de maneira diferente em diferentes navegadores; portanto, você precisa usar o prefixo do navegador no CSS para torná-los idênticos; por exemplo, o Firefox fornece uma transparência ao espaço reservado por padrão; portanto, é necessário adicionar a opacidade 1 ao css, mais a cor, não é uma grande preocupação na maioria das vezes, mas é bom tê-las consistentes:
fonte
Você pode alterar a cor do espaço reservado de uma entrada HTML5 com CSS. Se, por acaso, seu conflito de CSS, esta nota de código estiver funcionando, você pode usar (! Importante) como abaixo.
Espero que isso ajude.
fonte
Você pode usar isso para entrada e estilo de foco:
fonte
A maneira mais fácil seria:
fonte
Bússola tem um mixin para isso fora da caixa.
Veja o seu exemplo:
E no SCSS usando a bússola:
Consulte os documentos para a combinação de espaço reservado de entrada.
fonte
Aqui está a solução com seletores CSS
:: - webkit-input-placeholder.
:: -moz-placeholder (um dois pontos).
O Mozilla Firefox 19+ está usando um pseudoelemento:
:: - moz-placeholder, mas o seletor antigo ainda funcionará por um tempo.
:: -ms-input-placeholder.
fonte
Uma parte do HTML:
Vou mostrar como mudar a cor da expressão de 'Enter sentença' pelo CSS:
fonte