Change Placeholder Styles for HTML Inputs with CSS

HTML inputs have an attribute called placeholder that allows you to include temporary placeholder text that disappears when the user starts typing in the field. For example:

<input type="text" placeholder="Enter Your Name">

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; }

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; }

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; } }

Here is a demo that uses the Sass function to enable these placeholder styles in a cross-browser fashion:

As a final note, if you find styles aren’t applying in certain older browsers, you can try using the !important keyword.

Note: To the best of our knowledge, the information above and the snippet are accurate and up to date. However, in case you notice something wrong, please report snippet or leave a comment below.
Back to Snippets

Or start the conversation in our Facebook group for WordPress professionals. Find answers, share tips, and get help from other WordPress experts. Join now (it’s free)!

Most Searched Articles

14 of the Best JavaScript Libraries and Frameworks to Try Out in 2020

In this post, we look at the best JavaScript libraries and frameworks to try out this year. Why? Well, with JavaScript being available in every web browser, this makes it the most accessible programming language of ...

50+ Best Free WordPress Themes for 2020 (Responsive, Mobile-Ready, Beautiful)

If you're looking for only the best free WordPress themes in the market for this year, then you're in the right place. We have more than 60+ such themes for you right ...

10+ Best WordPress Hosting Providers of 2020 Compared & Tested

Looking for the best WordPress hosting that you can actually afford? We did the testing for you. Here are 10 best hosts on the market ...

Handpicked Articles

How to Make a WordPress Website: Ultimate Guide for Beginners and Advanced Users Alike

Many people wonder how to make a WordPress website. They’ve heard about WordPress, its incredible popularity, excellent features and designs, and now they want to join the pack and build a WordPress website of their own. So, where does one get ...

How to Start an eCommerce Business From Scratch (In 10 Steps)

Is 2020 going to be the year you learn how to start an eCommerce business from scratch? You’re certainly in the right place! This guide will give you a roadmap to getting from 0 to a fully functional eCommerce business. ...

Scroll to Top