以前、フロントエンド技術グループに所属していたとき、グループのメンバーが面接中に問題に遭遇したと言っていました。面接官は、マウスの位置に基づいてオブジェクトの移動方向を決定するデモを純粋な CSS を使用して実装するように依頼しました。 与えられた初期構造は次のとおりです。 <スタイル> 体 { パディング: 2em; テキスト配置: 中央; } 。ブロック { 位置: 相対的; 表示: インラインブロック; 幅: 10em; 高さ: 10em; 垂直位置合わせ: 中央; } .block_content { 位置: 絶対; 上: 0; 左: 0; 幅: 100%; 高さ: 100%; テキスト配置: 中央; 行の高さ: 10em; 背景: #333; 色: #FFF; } </スタイル> <p class="text">次のコンテンツ上でマウス ポインターをさまざまな方向から移動します</p> <p>↓</p> <span>→ </span> <div class="block"> <div class="block_content"> ホバリングして! </div> </div> <span>←</span> <p>↑</p> 効果図は以下のとおりです。 成し遂げる 業務とは全く関係のない、実用的でない質問ばかりでイライラします。中国のフロントエンドはいつになったら立ち上がるのでしょうか? 良い質問をありがとうございます。実装できるよう最善を尽くします。 では、この機能は本当に純粋な CSS で実現できるのでしょうか? 答えは「はい」です。まず、そのアイデアを分解してみましょう。 CSS マウスイベント まず、質問によると、この質問ではマウス操作を使用する必要があることがわかります。JS にはさまざまな この質問で使用するセレクターは、hoverです 方向を決める 方向を判断する機能がこの質問の核心です。 タイトル画像から判断すると、実際には方向指示が与えられており、マウスを 4 つの矢印の方向に入力する必要があることがわかります。 次に、純粋な CSS で実装する場合、マウスがキー ノードに触れる必要があり、このノードの特定のパフォーマンスによってこの位置を表現できる必要があります。 これらは質問に示されている 2 つの隠れた条件です。 それでは実装してみましょう。 まず、 <スタイル> .block_hoverer { 位置: 絶対; 幅: 100%; 高さ: 100%; zインデックス: 1; } .block_hoverer:n番目の子(1) { 背景: 赤; } .block_hoverer:n番目の子(2) { 背景:ライム; } .block_hoverer:n番目の子(3) { 背景: オレンジ; } .block_hoverer:n番目の子(4) { 背景: 青; } </スタイル> <div class="block"> <div class="block_hoverer">トップ</div> <div class="block_hoverer">次へ</div> <div class="block_hoverer">左</div> <div class="block_hoverer">右</div> <div class="block_content"> ホバリングして! </div> </div> 効果は以下のとおりです。 右のブロックを除いて、他のすべてが覆われていることがわかります。これは正常です。 次に、これらのブロックを端に戻す必要があります。 コードは次のとおりです。 .block_hoverer { 位置: 絶対; zインデックス: 1; 幅: 100%; 高さ: 100%; 遷移: すべて 0.3 秒の緩和; } .block_hoverer:n番目の子(1) { 背景: 赤; 上限: -90%; } .block_hoverer:n番目の子(2) { 背景:ライム; 上位: 90% } .block_hoverer:n番目の子(3) { 背景: オレンジ; 左: -90%; } .block_hoverer:n番目の子(4) { 背景: 青; 左: 90%; } 効果は以下のとおりです。 次に、トランジションを追加します。 .block_hoverer { 遷移: すべて 0.3 秒の緩和; } .block_hoverer:ホバー{ 不透明度: 1; 上: 0; 左: 0; } 効果は以下のとおりです。 1 つのステップは非表示にすることです: 。ブロック { 位置: 相対的; 表示: インラインブロック; オーバーフロー: 非表示; 幅: 10em; 高さ: 10em; 垂直位置合わせ: 中央; } .block_hoverer { 不透明度: 0; } .block_hoverer:ホバー{ 不透明度: 1; } 効果は以下のとおりです。 完全なコードは次のようになります。 <スタイル> 体 { パディング: 2em; テキスト配置: 中央; } 。ブロック { 位置: 相対的; 表示: インラインブロック; オーバーフロー:非表示; 幅: 10em; 高さ: 10em; 垂直位置合わせ: 中央; 変換: translateZ(0); } .block_hoverer { 位置: 絶対; zインデックス: 1; 幅: 100%; 高さ: 100%; 不透明度: 0; 遷移: すべて .3 秒の緩和; } .block_hoverer:n番目の子(1) { 背景: 赤; 上限: -90%; } .block_hoverer:n番目の子(2) { 背景:ライム; 上位: 90% } .block_hoverer:n番目の子(3) { 背景: オレンジ; 左: -90%; } .block_hoverer:n番目の子(4) { 背景: 青; 左: 90%; } .block_hoverer:ホバー{ 不透明度: 1; 上: 0; 左: 0; } .block_content { 位置: 絶対; 上: 0; 左: 0; 幅: 100%; 高さ: 100%; テキスト配置: 中央; 行の高さ: 10em; 背景: #333; 色: #FFF; } </スタイル> <本文> <p class="text">次のコンテンツ上でマウス ポインターをさまざまな方向から移動します</p> <p>↓</p> <span>→ </span> <div class="block"> <div class="block_hoverer">1</div> <div class="block_hoverer">2</div> <div class="block_hoverer">3</div> <div class="block_hoverer">4</div> <div class="block_content"> ホバリングして! </div> </div> <span>←</span> <p>↑</p> </本文> 完全な効果については、Yutouのコードペンをご覧ください。 CSS によるマウス入力方向の決定に関する記事はこれで終わりです。CSS マウス入力方向に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き閲覧してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 |
<<: CSSスタイルで実現されるHTML背景色のグラデーション効果
背景コメントに似た機能を開発する場合は、必要に応じてすべてのコメントのサブセットをクエリする必要があ...
この記事の例では、画像拡大鏡効果を実現するためのVue3の具体的なコードを参考までに共有しています。...
目次序文根拠手順1. CDから仮想マシンを起動する2. GPartedツールを使用してパーティション...
序文:ストレージ エンジンはデータベースの中核です。MySQL の場合、ストレージ エンジンはプラグ...
CSSを使用してブラウザのスクロールバーのスタイルを変更する ::-webkit-スクロールバー{ ...
目次序文1. 準備 - サーバーとnginxの使用1. サーバーを準備する2. nginxをインスト...
この記事の例では、参考のためにVueカスタムポップアップ効果の具体的なコードを共有しています。具体的...
目次1. Nginxは負荷分散の原則を実装する2. Nginxの動的および静的分離の原則Nginx ...
目次1. スローログの紹介2. スローログの練習1. スローログの紹介スロー ログの正式名称はスロー...
dig - DNS ルックアップ ユーティリティドメイン名のアクセス障害が発生した場合、ドメイン名の...
目次MySQL 複数インスタンスマルチインスタンスの概要マルチインスタンスとは何ですか?複数のインス...
iPad でページをデバッグするにはどうすればいいですか? iOS 5 をご利用の場合、iPad の...
テーブルを美しくするために、テーブルにさまざまな境界線の色を設定できます。基本的な構文<テーブ...
Web ページを作成するときに、特定のフォントを使用したい場合は、 @font-faceを介して参照...
何ですかまず、Docker の概念を見てみましょう。アプリケーションと実行環境をコンテナにパッケージ...