プログラミング

プログラミング

CSSを利用してメールアドレス入力フィールドを改善する方法【入力時のみ有効なボタンを】

1,631 views

読了時間 : 約1分44秒

サイト制作中、私はメールの購読ボックスをもう少し改善しようと思い立ちました。

私のアイデアは、メールアドレスが入力された場合のみアクションボタンを有効化するというものでした。CSSの疑似クラス:placeholder-shownを使って、送信前に視覚的にメールアドレスを検証することができたので、みなさんにご紹介します。

 

 

実装結果

こんなフォームが作れます。実際に触ってみてください。

 

 

:placeholder-shownについて

CSSの疑似クラスである:placeholder-shownは、placeholder属性のテキストを表示しているフォームと、そうでないものとの比較を行います。

・HTMLのみのバージョン

送信ボタンが、メールアドレスの入力を始めてから有効化されています。

 

今回のデモにはTachyonsを使いましたが、この使用は任意です。次のマークアップだけでも十分に機能します。

 

 

 

・CSS

簡単にまとめると、次のCSSは「プレースホルダーが表示された#email要素の隣りにある、フォーカスのない#submit要素を選択する」という動作をしています。

 

 

このCSSで、入力フィールドに何かが入力されるまで送信ボタンが無効化されているように見せられます。実は無効化されているのは見た目だけで、HTMLのdisabled属性で実際に無効化しているわけではありません。

 

キーボードのTabキーを使った操作には、この手法はあまり効果的ではありません。そのため、#submit要素にフォーカスがある場合にはボタンの無効化を行いません。前出のコードで:not(:focus)を使ったのはこのためです。

 

 

:focus-within

今回のデモを作りながら、:focus-withinを使えばもっと改良が加えられると考えました。疑似クラス:focus-withinはフォーカスを受け取った要素、もしくはフォーカスを受け取った要素を含む要素を選択します。子要素の状態によって親要素を選択するCSSの親セレクタに似ています。

 

最後に、シンプルなドロップシャドウを加えました。

 

 

 

 

これで完成!

この手法は、ネイティブの振る舞いを邪魔せずにフォームを改善できます。CSSだけで安全にUXを向上させられます。あなたのサイトでもぜひ活用してください。

 

 

▼こちらもおすすめですよ。

【グリッド×アニメーション】コード付き!「動くCSSグリッド」のクリエイティブな使用例10選!

 

 

 

※本記事はVisually validate an input field using CSSを翻訳・再構成したものです。

おすすめ新着記事

おすすめタグ