inputのプレースホルダー(placeholder)の色を変更する

CSSを使ってHTMLのinput要素のプレースホルダー(placeholder)テキストの色を変更する方法を解説します。主要ブラウザで互換性を保つためのスタイル記述を含みます。
実装例:プレースホルダーの色指定(クロスブラウザ対応)
::placeholder { /* Chrome、Firefox、Opera、Safari 10.1以降 */
color: red;
opacity: 1; /* Firefox用の透明度調整 */
}
:-ms-input-placeholder { /* Internet Explorer 10〜11用 */
color: red;
}
::-ms-input-placeholder { /* Microsoft Edge用 */
color: red;
}
コード解説
プレースホルダーはユーザーが入力を開始する前に入力フィールド内に表示されるヒントテキストです。スタイルのデフォルトはブラウザによって異なるため、デザインの統一やアクセシビリティを考慮すると、CSSでのカスタマイズが重要です。
標準仕様では::placeholder
疑似要素を使いますが、Microsoft系ブラウザでは独自の疑似要素(:-ms-input-placeholder
、::-ms-input-placeholder
)を使わないと色変更が反映されません。
また、Firefoxはプレースホルダーのテキストを少し薄く表示するため、opacity
を1に設定することで見た目を標準化しています。
注意点・補足
::placeholder
はIE10-11非対応のため、必ず:-ms-input-placeholder
も記述する
色の指定はcolor
プロパティのみで、他のテキスト装飾も適用可能
JavaScriptなどで動的にプレースホルダーを変更した場合、スタイルは継続適用される
透明度を変更しないとFirefoxで薄く表示されることがある
Web制作現場でよくある質問(FAQ)
Q1: プレースホルダーの色はなぜ変えたいの?
A1: デザイン上の理由やアクセシビリティ向上のため、視認性を良くするために変更します。
Q2: なぜ複数の疑似要素を使うの?
A2: 各ブラウザの実装が異なるため、対応ブラウザごとに異なる疑似要素が必要です。
Q3: opacityはなぜ必要?
A3: Firefoxではプレースホルダーの透明度がデフォルトで低く設定されているため、opacity: 1
で見た目を調整します。
まとめ
- 近年のブラウザでは
::placeholder
が標準的に対応 - 古いIE/Edge向けのベンダープレフィックスも忘れずに指定
- 見た目を均一に保つために透明度(opacity)の指定も推奨