私はしばらくの間、同じスタイリングテクニックを探していました。UI / UXの観点から-検索フォームを単一の要素に単純化することは、特定の状況では非常に理にかなっています。
以下の例を考えてみましょう。

開発の観点からアプローチする場合、ひざまずくのは、入力要素ではなくフォーム自体のスタイルを決定することです。左側に透明なinput[type= text]、右側に透明な.PNG送信ボタンがあり、シャープな検索フィールドがあります。
ただし、ご存知のとおり、入力フィールドは背景や色などを制御するフィールドではなく、フォーム要素が代わりに使用されるため、:focusに関連付けられたCSSスタイル機能を放棄します。
form:focusセレクターはそれを処理するのに最適な方法です。残念ながら、そのためにはCSS4を待つ必要があります(tid-bitのmatt3141に感謝します)。
それまでの間、いくつかのオプションをご利用いただけます
オプション1-クリック可能な送信ボタンを使用しない
私は通常、可能であればこれを避けようとしますが、送信ボタンを完全に放棄するオプションがあります。意図したとおりにテキストフィールドのスタイルを設定し、位置を左またはフィールドの右に制限した背景画像を使用します。ユーザーがクエリを入力してEnterキーを押した場合でも、GETアクションを実行できます。上の画像の例では、この手法を使用しています。
例:http ://designdisease.com/
長所:セットアップが最も簡単です。
欠点:検索ボタンをクリックしたままのユーザーは混乱する可能性があります。
オプション2-代替要素を使用して背景のスタイルを設定する
次のオプションは、ovが以前の回答で寛大に説明したように、兄弟セレクターとコンテンツタグを利用することです。これは、エフェクトで新しい要素を追加し、:focusエフェクトが入力フィールドに適用されたときに、指定された領域の新しい背景として機能するようにスタイルを設定します。
例: http: //jsfiddle.net/ovfiddle/PEK7h/2/
長所:複数のフィールドを持つより大きなフォームに簡単に拡張できます。
欠点:集中的なセレクターは、私たちが望むほど優雅に劣化しない可能性があります。
オプション3-絶対ポジショニングを使用して要素をスタックする
テキストフィールドがフォームの全幅を含む状況では、position:absolute;を使用できます。属性を入力要素の上に送信ボタンをロードし、ボタンをいくつかcssで微調整して背景/境界線を削除します。上記の例の画像と同じ効果がありますが、クリック可能にするという利点があります。
ステップ1:フォームに相対/絶対/固定の位置を指定します。
ステップ2:テキストフィールドの幅を100%にします。
ステップ3:ボタンに絶対位置を指定し、正しい位置を0にします。
新しいテクニックを組み込むためにovのフィドルを更新しました:
例: http: //jsfiddle.net/PEK7h/17/
Pro's:優雅に劣化し、ほとんどの単一入力フィールドの場合に必要なものを提供します。
欠点:ovの修正のように大きなフォームに簡単に拡張することはできません。
-
ご覧のとおり、各オプションには独自の欠点がありますが、事前に知っていれば、通常はその影響を軽減できます。お役に立てれば!