Faux placeholder clearing with CSS
Maybe you're like me, and you're not crazy about the way the
placeholder attribute works for text fields. I think the placeholder
text should clear once the input has focus. Instead, the text only
clears after the user starts typing.
The good news is that we can modify this behavior without (completely*) compromising accessibility by changing the color of the placeholder text to transparent (or using an RGBa/HSLa color with a 0 alpha).
Below, is a snippet of CSS that shows you how to do this. It uses
vendor-specific pseudo-elements, which is currently the best/only way to
do this. In the future, I suspect we'll have a standard placeholder or
input-placeholder selector. For now, we need to take this
less-than-standard approach.
:focus::-webkit-input-placeholder{
color: transparent;
}
:focus::-moz-placeholder {
color: transparent;
}
:focus:-ms-input-placeholder {
color: transparent;
}
Here we're using the transparent keyword of the color property, but
you could also use rgba(0,0,0,0) or background: hsla(0%,0%,0%,0);.
And a demo
*I haven't actually tested how the placeholder attribute works with
assistive technology, so keep that in mind. If you happen to, please let
me know if you run into problems.