上部のメニュー バーに検索ボックスを配置するのは一般的なシナリオですが、検索機能がそれほど頻繁に使用されておらず、メニュー バーのコンテンツがすでに混雑している場合は、そこに完全な検索ボックスを配置しても見た目があまり美しくありません。したがって、次の図に示すように、検索アイコンのみを配置し、必要なときに検索ボックス全体を表示するのが一般的です。 実装のアイデア検索ボックスは初期状態では表示されません。マウスが移動すると右からスライドインします。そのため、検索ボックス自体のhidden属性やtransparency属性は使用できません。親要素の CSS でアニメーション効果を実現するには、 これら 2 つのアニメーションの実装はシンプルですが、いくつか細かい点があります。
コードの実装完全なスタイルシートは記事の最後に添付されています。具体的なアイデアを読みたくない場合は、このセクションをスキップして直接コピーできます。 基本スタイルまずは基本的なスタイルから始めましょう。ここで使用されているアイコンはマテリアル デザインのアイコンです。 <div class="検索"> <input class="bar" placeholder="コンテンツを入力してください" /> <span class="material-icons icon">検索</span> </div> .アイコン { 幅: 24px; 高さ: 24px; } 。バー { 高さ: 26px; 幅: 200ピクセル; パディング: 1px 9px; 境界線: #fff 1px 実線; 境界線の半径: 3px; 背景色: 透明; 色: #fff; } ::プレースホルダー{ color: #ccc; /* 入力内のプレースホルダーの色を変更します*/ } 。検索 { 高さ: 30px; ディスプレイ: フレックス; アイテムの位置を中央揃えにします。 } 検索ボックスを非表示検索ボックスを移動するには、絶対位置や相対位置を使用するなど、さまざまな方法があります。
より直接的な方法として、 transform プロパティもあります。このプロパティを使用すると、他の要素に影響を与えずに、要素の移動、回転、スケーリングなどの変換操作を実装できます。ここで使用される 追記: transition、transform、translate の違いが分からないのは私だけではないはずです。 。検索 { オーバーフロー: 非表示; } 。バー { 変換: translateX(224px); /* 前の文は、同じ効果の位置: relative; を持つ次の 2 つの文に置き換えることもできます。 左: 224px; */ } アニメーションシーケンスアニメーションは transition プロパティを通じて実現されます。 transition は、transition-property、transition-duration、transition-timing-function、および transition-delay の略語です (例:
トランジション属性は、基本的には小学校のコンピュータの授業で習った Flash トゥイーン アニメーションです。属性の開始状態と終了状態を指定し、その間のトランジション アニメーションを自動的に完了します。要素の元の属性は開始状態、マウスが移動した後のアニメーション、自然な要素の .アイコン { 不透明度: 1; transition: opacity 0.3s easy; /* delay プロパティのデフォルト値は 0 です */ } .search:hover .icon { 不透明度: 0; } 。バー { 変換: translateX(224px); 遷移: transform 0.3s、ease-in-out 0.3s; } .search:hover .bar { 変換: translateX(24px); } 逆順基本的には、目的のアニメーション効果を実現できますが、検索ボックスが非表示になっている場合は、最初にアイコンが表示され、検索ボックスの後にスライドアウトするため、美しさが足りません。解決策も非常に簡単で、ホバー疑似クラスに異なる遅延属性を設定するだけです。 注目すべき点は、ホバー疑似クラスの delay 属性はマウスが上に移動したときの遅延に対応し、要素自体の属性の delay はマウスが外に出たときのアニメーション再開の遅延に対応することです。最初の反応と同じではないかもしれませんが(よく考えれば意味がわかります)、逆に書かないでください。 .アイコン { 遷移: 不透明度 0.3 秒、緩和 0.3 秒; } .search:hover .icon { 遷移遅延: 0秒; } 。バー { 遷移: transform 0.3s、ease-in-out 0s; } .search:hover .bar { 遷移遅延: 0.3秒; } トリガーエリア実際、上記の手順で目的のアニメーション効果が得られます。しかし、まだ小さな問題が残っています。アニメーションは親要素 .search のホバー状態によってトリガーされるため、マウスが検索ボックスがあるはずの検索アイコンの左側 (現在は何もなく、非表示になっています) に移動すると、検索ボックスを表示するアニメーションがトリガーされます。これは実際には受け入れられないことではありません。 マウスがアイコンの上に移動したときのみアニメーションをトリガーしたい場合は、トリガー条件を .icon のホバー状態に変更するだけです。ただし、CSS には後続要素セレクターしかなく、先行要素セレクターがないため (DOM レンダリング CSS の原則ではバックトラックが発生しないため)、HTML でアイコンと検索ボックスの順序を調整する必要があります。 <div class="検索"> <span class="material-icons icon">検索</span> <input class="bar" placeholder="コンテンツを入力してください" /> </div> 次に、対応するスタイルとセレクターを変更します。 .icon:hover { 不透明度: 0; 遷移遅延: 0秒; } .icon:hover + .bar { /* + 隣接兄弟セレクター*/ 変換: translateX(24px); 遷移遅延: 0.3秒; } 。検索 { ディスプレイ: フレックス; flex-direction: row-reverse; /* 検索ボックスをアイコンの左側に残す*/ } 付録: 完全なスタイルシート <div class="検索"> <span class="material-icons icon">検索</span> <input class="bar" placeholder="コンテンツを入力してください" /> </div> .アイコン { 幅: 24px; 高さ: 24px; 不透明度: 1; 遷移: 不透明度 0.3 秒、緩和 0.3 秒; } .icon:hover { 不透明度: 0; 遷移遅延: 0秒; } 。バー { 高さ: 26px; 幅: 180ピクセル; パディング: 1px 9px; 境界線: #fff 1px 実線; 境界線の半径: 3px; 背景色: 透明; 色: #fff; 変換: translateX(224px); 遷移: transform 0.3s、ease-in-out 0s; } .icon:hover + .bar { 変換: translateX(24px); 遷移遅延: 0.3秒; } ::プレースホルダー{ 色: #ccc; } 。検索 { 高さ: 30px; ディスプレイ: フレックス; flex-direction: 行を反転します。 アイテムの位置を中央揃えにします。 オーバーフロー: 非表示; } CSSを使用して隠し検索ボックス機能(アニメーション順方向と逆方向シーケンス)を実装する方法についての記事はこれで終わりです。より関連性の高いCSSアニメーション順方向と逆方向シーケンスのコンテンツについては、123WORDPRESS.COMの以前の記事を検索するか、次の関連記事を引き続き閲覧してください。今後とも123WORDPRESS.COMを応援してください。 |
<<: レスポンシブなカードホバー効果を実現するための HTML+CSS
>>: HTML+CSS+JSはナビゲーションバーのスクロールグラデーション効果を実現します
目次splice() メソッドjoin() メソッド逆() メソッドevery() メソッド削減()...
この記事では、VMware 12でのUbuntu 16.04イメージのインストールチュートリアルを参...
序文:デジタル加算ボタンと減算ボタンの実装には、次のような多くのソリューションがこれまでに使用されて...
目次1. ReactJS の紹介2. ReactJSの理解とReactJSの利点1. ReactJS...
目次Samba サーバーの紹介Samba サーバー コンポーネントSamba サーバー関連の設定ファ...
フロントエンド Web エンジニアとして、ページ効果を作成するときに次の現象に遭遇したことがあるはず...
目次1. Props 親コンポーネント ---> 子コンポーネント通信2. $emit 子コン...
Dockerのインストール カール -fsSL https://get.docker.com -o...
1. cmakeをインストールする1. cmakeの圧縮パッケージを解凍する [root@mysql...
序文モバイル デバイスでは、帯域幅とプロセッサ速度の制限により、Web ページのパフォーマンスに対す...
今日はメニューボタンを作りました。マウスをボタンに移動するすると、ドロップダウンサブメニューが表示さ...
IE8 や Chrome で上記の設定を使用すると、画面の最大幅に合わせて表示が統一され、各列の幅は...
この記事では、参考までに、Vue の具体的なコードで簡単な計算機を実装する方法を紹介します。具体的な...
この記事では、コンパイルとインストールから設定ファイルの説明まで、Nginx について詳しく紹介しま...
目次1. プロセスとスレッドの概念2. プロセス管理とは何ですか? 3. プロセス管理の役割4. L...