- CSS Tutorial
- CSS - Home
- CSS - Introduction
- CSS - Syntax
- CSS - Selectors
- CSS - Inclusion
- CSS - Measurement Units
- CSS - Colors
- CSS - Backgrounds
- CSS - Fonts
- CSS - Text
- CSS - Images
- CSS - Links
- CSS - Tables
- CSS - Borders
- CSS - Border Block
- CSS - Border Inline
- CSS - Margins
- CSS - Lists
- CSS - Padding
- CSS - Cursor
- CSS - Outlines
- CSS - Dimension
- CSS - Scrollbars
- CSS - Inline Block
- CSS - Dropdowns
- CSS - Visibility
- CSS - Overflow
- CSS - Clearfix
- CSS - Float
- CSS - Arrows
- CSS - Resize
- CSS - Quotes
- CSS - Order
- CSS - Position
- CSS - Hyphens
- CSS - Hover
- CSS - Display
- CSS - Focus
- CSS - Zoom
- CSS - Translate
- CSS - Height
- CSS - Hyphenate Character
- CSS - Width
- CSS - Opacity
- CSS - Z-Index
- CSS - Bottom
- CSS - Navbar
- CSS - Overlay
- CSS - Forms
- CSS - Align
- CSS - Icons
- CSS - Image Gallery
- CSS - Comments
- CSS - Loaders
- CSS - Attr Selectors
- CSS - Combinators
- CSS - Root
- CSS - Box Model
- CSS - Counters
- CSS - Clip
- CSS - Writing Mode
- CSS - Unicode-bidi
- CSS - min-content
- CSS - All
- CSS - Inset
- CSS - Isolation
- CSS - Overscroll
- CSS - Justify Items
- CSS - Justify Self
- CSS - Tab Size
- CSS - Pointer Events
- CSS - Place Content
- CSS - Place Items
- CSS - Place Self
- CSS - Max Block Size
- CSS - Min Block Size
- CSS - Mix Blend Mode
- CSS - Max Inline Size
- CSS - Min Inline Size
- CSS - Offset
- CSS - Accent Color
- CSS - User Select
- CSS Advanced
- CSS - Grid
- CSS - Grid Layout
- CSS - Flexbox
- CSS - Visibility
- CSS - Positioning
- CSS - Layers
- CSS - Pseudo Classes
- CSS - Pseudo Elements
- CSS - @ Rules
- CSS - Text Effects
- CSS - Paged Media
- CSS - Printing
- CSS - Layouts
- CSS - Validations
- CSS - Image Sprites
- CSS - Important
- CSS - Data Types
- CSS3 Tutorial
- CSS3 - Tutorial
- CSS - Rounded Corner
- CSS - Border Images
- CSS - Multi Background
- CSS - Color
- CSS - Gradients
- CSS - Box Shadow
- CSS - Box Decoration Break
- CSS - Caret Color
- CSS - Text Shadow
- CSS - Text
- CSS - 2d transform
- CSS - 3d transform
- CSS - Transition
- CSS - Animation
- CSS - Multi columns
- CSS - Box Sizing
- CSS - Tooltips
- CSS - Buttons
- CSS - Pagination
- CSS - Variables
- CSS - Media Queries
- CSS - Functions
- CSS - Math Functions
- CSS - Masking
- CSS - Shapes
- CSS - Style Images
- CSS - Specificity
- CSS - Custom Properties
- CSS Responsive
- CSS RWD - Introduction
- CSS RWD - Viewport
- CSS RWD - Grid View
- CSS RWD - Media Queries
- CSS RWD - Images
- CSS RWD - Videos
- CSS RWD - Frameworks
- CSS References
- CSS - Questions and Answers
- CSS - Quick Guide
- CSS - References
- CSS - Color References
- CSS - Web browser References
- CSS - Web safe fonts
- CSS - Units
- CSS - Animation
- CSS Resources
- CSS - Useful Resources
- CSS - Discussion
CSS - Pseudo-element - ::placeholder
Description
The ::placeholder pseudo-element represents placeholder text in an <input> or <textarea> field. The text as placeholder gives a hint on what needs to be entered in the field. The CSS properties can be used to change the appearance of the text, for example, set the font and color.
Only the subset of CSS properties that apply to the ::first-line pseudo-element, can be used in a rule using ::placeholder in its selector.
Syntax
selector::placeholder { /* ... */ }
Accessibility Concerns:
It is important to check the contrast ratio between the color of the placeholder text and the background of the input.
If the color contrast is high, the placeholder text may be confused with as entered text. So to avoid this confusion, you may use the aria-describedby attribute, to add a text in closer proximity, that provides hint to the user.
When the user-entered text is rendered with the same styling as the placeholder text, in Windows High Contrast Mode, makes it difficult to distinguish between the placeholder text and the entered text.
The placeholders are not a replacement for the <label> element. The assistive technologies can not parse the <input> element.
CSS ::placeholder Example
Here is an example of ::placeholder pseudo-element:
<html> <head> <style> .form { border: 2px solid black; background: lightgray; margin: 15px; padding: 25px; width: 250px; } input::placeholder { color: grey; font-style: italic; background-color: cornsilk; padding: 5px; } input { margin-bottom: 3px; } </style> </head> <body> <div class="form"> <input type="text" placeholder="First Name"> <input type="text" placeholder="Last Name"> <input type="text" placeholder="Address"> <input type="text" placeholder="Phone"> </div> </body> </html>
CSS - Pseudo-element - ::placeholder - Opaque text
This feature can be viewed only on Firefox.
Browsers like Firefox set the opacity of placeholders less than 100%. Set opacity:1 to get fully opaque placeholder text as demonstrated in the following example:
<html> <head> <style> input::placeholder { color: blue; padding: 5px; } .opaque-text::placeholder { opacity: 1; } </style> </head> <body> <h2>Execute on Firefox browser</h2> <div class="form"> <input type="text" placeholder="Default Opacity"> <input type="text" class="opaque-text" placeholder="Forced Opcaity"> </div> </body> </html>