Um exemplo ilustrativo AQUI no jsFiddle.
#Update 2014-08-31: Adicionado suporte para diferentes versões do Firefox.
estilo padrão de espaço reservado
A primeira coisa que você precisa fazer é projetar seu estilo de espaço reservado, se desejar. Neste caso escolhi a cor .
Sintaxe:
input[placeholder],
input:-moz-placeholder, /* Mozilla Firefox 4 to 18 */
input::-moz-placeholder { /* Mozilla Firefox 19+ */
color: #8D8D8D;
}
input::-webkit-input-placeholder {
color: #8D8D8D;
}
input:-ms-input-placeholder {
color: #8D8D8D;
}
configurações de animação
Todo o comportamento do valor do marcador de posição é referenciado a uma regra de quadro – chave chamada slidein .
Eu escolhi 400ms para a duração da animação é 400ms e a animação começa após 100ms .
modo de preenchimento ( avançar ) significa que o último quadro-chave será retido após a conclusão da animação .
Sintaxe:
input[placeholder]:focus,
input:focus:-moz-placeholder, /* Mozilla Firefox 4 to 18 */
input:focus::-moz-placeholder { /* Mozilla Firefox 19+ */
-moz-animation-name: slidein;
-moz-animation-delay: 0.1s;
-moz-animation-duration: 0.4s;
-moz-animation-fill-mode: forwards;
-moz-animation-timing-function: ease-out;
}
input:focus::-webkit-input-placeholder {
-webkit-animation-name: slidein;
-webkit-animation-delay: 0.1s;
-webkit-animation-duration: 0.4s;
-webkit-animation-fill-mode: forwards;
-webkit-animation-timing-function: ease-out;
}
input:focus:-ms-input-placeholder {
opacity: 0;
}
criar animação
Com o nome da animação que você definiu antes para ser sua regra de quadro-chave, agora você precisa do mesmo nome para criar esta regra de quadro-chave e ter uma ligação entre as configurações feitas antes com as regras que deseja.
Sintaxe:
@-webkit-keyframes slidein {
from {
opacity: 1;
padding-left: 0px;
}
to {
opacity: 0;
padding-left: 10px;
}
}
@-moz-keyframes slidein {
from {
opacity: 1;
padding-left: 0px;
padding-right: 10px;
}
to {
opacity: 0;
padding-left: 10px;
padding-right: 0px;
}
}
estilo de texto
Por último, mas não menos importante, você precisa definir em qual estilo os caracteres em seu campo de entrada serão projetados.
Sintaxe
input {
color: black;
padding-left: 0px;
padding-right: 10px;
}
Nota:
Para o Mozilla, você deve definir o valor padding-right no início para o mesmo que o valor final de padding-left , porque ele redimensiona toda a caixa de entrada . E você também precisa preenchê- lo com o mesmo valor acima. Porque o Firefox irá alternar entre dois tamanhos se você estiver no foco.