上部のメニュー バーに検索ボックスを配置するのは一般的なシナリオですが、検索機能がそれほど頻繁に使用されておらず、メニュー バーのコンテンツがすでに混雑している場合は、そこに完全な検索ボックスを配置しても見た目があまり美しくありません。したがって、次の図に示すように、検索アイコンのみを配置し、必要なときに検索ボックス全体を表示するのが一般的です。 実装のアイデア検索ボックスは初期状態では表示されません。マウスが移動すると右からスライドインします。そのため、検索ボックス自体の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はナビゲーションバーのスクロールグラデーション効果を実現します
端的に言うと、スクロール可能な要素には非常によくある状況があります。通常、スクロールすると、要素が現...
01. コマンドの概要basename - ファイル名からディレクトリとサフィックスを削除しますba...
目次1. 準備2. 減圧3. 統合を開始する1. 準備Ckeditor_4.5.7_full + C...
目次server1にnginxをデプロイするサーバーにlnmpを展開するノード3にhttpdをデプロ...
この記事の例では、参考のためにjsカスタム右クリックメニューの具体的なコードを共有しています。具体的...
設計業務では、設計者がレビューに参加したり、リーダーの一部が設計案の詳細が足りないと言っているのをよ...
目次1. nginxプロセスロックの役割2. エントリーレベルのロックの使用3. nginxプロセス...
目次1. 画像を取得する2. ブローカーサーバーを作成する3. ブローカーを作成する4. Rocke...
1. Dockerのインストールと設定 #CentOS をインストールし、Docker パッケージを...
目次1. リテラル値でオブジェクトを作成する2. 新しいキャラクターを使ってオブジェクトを作成する3...
目次1. JSONとは何か1.1 配列リテラル1.2 オブジェクトリテラル1.3 混合リテラル1.4...
Vue エコシステムには Vite と呼ばれる新しいビルド ツールがあり、Vue CLI よりも 1...
成果を達成する実装コードhtml <div id="コンテナ"> &...
Alibaba Cloud Dockerコンテナサービスの設定Alibaba Cloud Image...
この記事では、例を使用して、MySQL ビューの原理と基本操作を説明します。ご参考までに、詳細は以下...