デスクトップアプリを書いており、formの細かい指定で困っています。
実現したいことは、アプリ内の検索フォームに入力する際に、フォームの外側のborderの色を変化させたいです。
現物としては、twitterのSearch twitterのような感じを目指しています。
トライしたアプローチとしては、外枠となるdivの中にそれにラベリングしたinput要素を作り、cssでイベントに対応したborderの設定を書くということをしました。
html
1 <div id="search-box"> 2 <div class="search-icon"> 3 <アイコンのsvg> 4 </div> 5 6 <form method="post" action="#"> 7 <label for="search-box"> 8 <input type="search" placeholder="Search"> 9 </label> 10 </form> 11 </div>
css
1#search-box { 2 display: flex; 3 background-color: #aaa; 4 align-items: center; 5 border-radius: 15px; 6 margin-right: 50px; 7 width: 250px; 8 height: 30px; 9} 10 11.search-icon svg{ 12 (略) 13} 14 15#search-box input { 16 border: 0; 17 width: 100px; 18 background-color: #aaa; 19 margin-top: 3.5px; 20 outline: none; 21} 22 23 24#search-box :focus { 25 border: 1px solid #000 ;
label付けし、focusイベントに対しる外側のcssの変更を書けばいいのだろうと考えて、こうしたコードを書いたのですが、期待に反してinput要素のborderの変更だけ反映されてしまいました。
Q1. イベントの発生源とは別の要素のスタイルを正しく記述するにはどうすればよいでしょうか?
Q2. labelは一対一対応しかできないですが、アイコンの色も変更したいというように、イベントに対して複数要素のスタイルを変更する方法はありますでしょうか?
素人質問で恐縮ですが、宜しくお願い致します。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/06/19 16:14