HTML inputs use a “placeholder” attribute for temporary text that vanishes once typing begins.
For example:
<input type="text" placeholder="Enter Your Name">
Code language: HTML, XML (xml)
Browsers apply specific styles to the placeholder text by default, which is usually a shade of grey for the font color. You can change the styles of the placeholder in all modern browsers using the ::placeholder
pseudo-element:
::placeholder {
font-style: italic;
font-size: 1em;
color: mintcream;
background: thistle;
padding: 5px;
}
Code language: CSS (css)
Notice you’re able to style just about anything, including the background. These aren’t necessarily recommended styles, but they demonstrate what’s possible.
Current browser support for ::placeholder
is strong in modern browsers, but if you want deeper support, you’ll have to include different lines in your CSS to account for older syntax. So if you had multiple styles, as shown above, your code would look like this:
::-webkit-input-placeholder {
font-style: italic;
font-size: 1em;
color: mintcream;
background: thistle;
padding: 5px;
}
:-moz-placeholder {
font-style: italic;
font-size: 1em;
color: mintcream;
background: thistle;
padding: 5px;
}
::-moz-placeholder {
font-style: italic;
font-size: 1em;
color: mintcream;
background: thistle;
padding: 5px;
}
:-ms-input-placeholder {
font-style: italic;
font-size: 1em;
color: mintcream;
background: thistle;
padding: 5px;
}
::input-placeholder {
font-style: italic;
font-size: 1em;
color: mintcream;
background: thistle;
padding: 5px;
}
::placeholder {
font-style: italic;
font-size: 1em;
color: mintcream;
background: thistle;
padding: 5px;
}
Code language: CSS (css)
Not very efficient! Ideally, you would want all the selectors on a single line, in order to save all that code, but that won’t work due to the way browsers parse selectors. When a browser finds a selector it doesn’t support, the entire selector is ignored.
If you’re using a CSS preprocessor like Sass, you can save some keystrokes by using a function to generate all the blocks, like this:
$placeholder: ('::-webkit-input-placeholder', ':-moz-placeholder',
'::-moz-placeholder', ':-ms-input-placeholder', '::input-placeholder',
'::placeholder');
@each $selector in $placeholder {
#{$selector} {
font-style: italic;
font-size: 1em;
color: mintcream;
background: thistle;
padding: 5px;
}
}
Code language: PHP (php)
Here is a demo that uses the Sass function to enable these placeholder styles in a cross-browser fashion:
…
Don’t forget to join our crash course on speeding up your WordPress site. Learn more below: