inputのplaceholderをfocus時に文字を非表示(消す)にする方法
HTML5 から導入された<input>
のplaceholder
属性。
指定した値が初期値として表示されるのでユーザビリティを高められる。
背景
フォーカス時にもplaceholder
の文字列は表示されるため、入力ができる状態か否かが分かりづらい。
フォーカス時にはplaceholder
の文字列は非表示にしたい。 解決方法
JavaScriptで消す方法
placeholder
属性が存在する前に自前で初期値を設定した時にやっていた方法に近い。
<input type="text" placeholder="入力してください" onfocus="this.placeholder=''" onblur="this.placeholder='入力してください'" />
フォーカス時に placeholder を空にして、フォーカスが外れたらplaceholder
に値をセットする。
現環境では二度手間なのでやりたくはない。もしレガシー環境も考慮している(自前で placeholder を実装している)のであれば、この方法でやる必要がある。
CSSで消す方法
prefix
は省略するが、以下のCSSを追加するだけでOKinput::focus::placeholder {
color: transparent;
}