実装
3 つの異なる実装があります: 疑似要素、疑似クラス、および何もありません。
- WebKit、Blink (Safari、Google Chrome、Opera 15+)、および Microsoft Edge は、疑似要素: を使用しています
::-webkit-input-placeholder
。[参照]
- Mozilla Firefox 4 から 18 は疑似クラス
:-moz-placeholder
( 1 つのコロン) を使用しています。[参照]
- Mozilla Firefox 19 以降は疑似要素: を使用して
::-moz-placeholder
いますが、古いセレクターもしばらくの間は機能します。[参照]
- Internet Explorer 10 および 11 は疑似クラスを使用しています:
:-ms-input-placeholder
. [参照]
- 2017 年 4 月:最新のブラウザーのほとんどが単純な疑似要素をサポート
::placeholder
[参照]
Internet Explorer 9 以前はplaceholder
属性をまったくサポートしていませんが、Opera 12以前はプレースホルダーの CSS セレクターをサポートしていません。
最適な実装についての議論はまだ進行中です。疑似要素は、Shadow DOM内の実際の要素のように機能することに注意してください。padding
上のはinput
、疑似要素と同じ背景色になりません。
CSS セレクター
ユーザー エージェントは、不明なセレクターを持つルールを無視する必要があります。セレクター レベル 3を参照してください。
無効なセレクターを含むセレクターのグループは無効です。
そのため、ブラウザごとに個別のルールが必要です。そうしないと、グループ全体がすべてのブラウザーで無視されます。
::-webkit-input-placeholder { /* WebKit, Blink, Edge */
color: #909;
}
:-moz-placeholder { /* Mozilla Firefox 4 to 18 */
color: #909;
opacity: 1;
}
::-moz-placeholder { /* Mozilla Firefox 19+ */
color: #909;
opacity: 1;
}
:-ms-input-placeholder { /* Internet Explorer 10-11 */
color: #909;
}
::-ms-input-placeholder { /* Microsoft Edge */
color: #909;
}
::placeholder { /* Most modern browsers support this now. */
color: #909;
}
<input placeholder="Stack Snippets are awesome!">
使用上の注意
- 悪いコントラストを避けるように注意してください。Firefox のプレースホルダーはデフォルトで不透明度を下げているように見えるため、
opacity: 1
ここで使用する必要があります。
- プレースホルダー テキストは、収まらない場合は切り取られることに注意してください。入力要素の
em
サイズを変更し、最小フォント サイズを大きく設定してテストしてください。翻訳を忘れないでください。一部の言語では、同じ単語に対してより多くのスペースが必要です。
- HTML をサポートして
placeholder
いるが CSS をサポートしていないブラウザー (Opera など) もテストする必要があります。
- 一部のブラウザーは、一部の
input
タイプ ( email
、search
) に対して追加のデフォルト CSS を使用します。これらは、予期しない方法でレンダリングに影響を与える可能性があります。プロパティ -webkit-appearance
を使用して、それ-moz-appearance
を変更します。例:
[type="search"] {
-moz-appearance: textfield;
-webkit-appearance: textfield;
appearance: textfield;
}