この記事では、虫眼鏡効果を実現するためのJavaScriptの具体的なコードを参考までに紹介します。具体的な内容は次のとおりです。 今回得られた効果は以下の通りです。 このケースは少し難しく、CSSとJSの両方についてさらに考える必要があります。さっそく始めましょう〜 1. まず、HTML と CSS を使用して全体のレイアウト、つまり隣接する 2 つのボックス A と B、および左側のボックス A 内の小さなボックス S を計画する必要があります。隣接性を実現するために、私が採用した方法は、両方に 2. 次に、js を使用してアニメーション効果を設定する必要があります。つまり、マウスをボックス A に置くと、小さなボックス S の位置がマウスの動きに合わせて移動し、ボックス B の画像はボックス S で覆われた画像の拡大バージョンになります。どうやってそれを達成するのでしょうか? 3.まず、小さなボックス S の位置の変更を実現します。ボックス A の 4.次に、ボックス B の画像を、ボックス S で覆われた画像の拡大版にします。まず、この拡大効果をどのように実現できるかという疑問について考えてみましょう。 私の実装の観点から見ると、ボックス B の場合、まず背景画像 == ボックス A の画像が必要であり、次にそれを特定の倍数 x で拡大します。ボックス S が移動すると、拡大 + 移動の効果を実現するために、ボックス B の 5.最後に、xとyの値は何ですか? (S、A、B がすべて等しい比率であると仮定) x :ボックス B を拡大する係数は、 A のサイズを S のサイズで割った値に等しくする必要があります。これにより、同じ画像範囲を実現できます。 y : B が移動したときの距離の変化は、ボックス S が移動する距離 * (ボックス B のサイズを S のサイズで割った値) になります。もっと考えてもいいよ〜 実装プロセスが複雑すぎるかもしれません。もっと良い方法を思いついたら、メッセージを残してください。 コードは次のとおりです。 <!DOCTYPE html> <html lang="ja"> <ヘッド> <メタ文字セット="UTF-8"> <meta http-equiv="X-UA-compatible" content="IE=edge"> <meta name="viewport" content="width=デバイス幅、初期スケール=1.0"> <title>ドキュメント</title> <スタイル> * { マージン: 0; パディング: 0; } #箱 { 位置: 絶対; 左: 180ピクセル; 上: 100px; } #ボックス画像{ 幅: 400ピクセル; 高さ: 300px; 境界線: 1px実線 rgba(255, 255, 255, 0.7); 垂直方向の位置合わせ: 下; } #ナビ{ 幅: 480ピクセル; 高さ: 360ピクセル; 境界線: 1px実線 rgba(255, 255, 255, 0.7); 位置: 絶対; 左: 582ピクセル; 上: 100px; 背景画像: url(../img/morn.jpg); 背景繰り返し: 繰り返しなし; 背景サイズ: 250% 250% } #小さい { 幅: 160ピクセル; 高さ: 120px; 位置: 絶対; } </スタイル> </head> <本文> <div id="ボックス"> <div id="small"></div> <img src="../img/morn.jpg" alt=""> </div> <div id="nav"></div> <スクリプト> box = document.getElementById("box"); とします。 small = document.getElementById("small"); とします。 nav = document.getElementById("nav"); とします。 box.onmousemove = 関数 (クライアント) { x = client.clientX - box.offsetLeft とします。 y = client.clientY - box.offsetTop とします。 small.style.left = x - 80 + 'px'; small.style.top = y - 60 + 'px'; dis_x = box.offsetLeft + box.offsetWidth - client.clientX とします。 dis_y = box.offsetTop + box.offsetHeight - client.clientY とします。 nav.style.backgroundPositionX = (80 - x) * 3 + 'px'; nav.style.backgroundPositionY = (60 - y) * 3 + 'px'; (x - 80 < 0) の場合 { 小さいスタイルを左に 0 に設定します。 nav.style.backgroundPositionX = 0; } (dis_x <= 80)の場合{ small.style.left = box.offsetWidth - 160 + 'px'; nav.style.backgroundPositionX = (160 - box.offsetWidth) * 3 + 'px'; } (y - 60 < 0)の場合{ 小さいスタイルトップ = 0; nav.style.backgroundPositionY = 0; } (dis_y < 60)の場合{ small.style.top = box.offsetHeight - 120 + 'px'; nav.style.backgroundPositionY = (120 - box.offsetHeight) * 3 + 'px'; } small.style.backgroundColor = "rgba(135, 207, 235, 0.61)"; } box.onmouseout = 関数(){ small.style.backgroundColor="透明" } </スクリプト> </本文> </html> 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: W3C チュートリアル (15): W3C SMIL アクティビティ
バントリストコンポーネントをスクロールするときに、スクロールバーの位置が保持されます。これは、kee...
コードは次のようになります。 // 配送先住所の平行四辺形の線のスタイル <view clas...
理由は分かりませんが、UIではハニカム効果(手を広げたような効果)のデザインが好まれます。 1. 六...
1. 仮想マシンバージョン15.5.1をダウンロードする公式サイトから直接最新バージョンをダウンロー...
目次1. インストール2. プロジェクトにインポートしてマウントする3. 使用Vue2.x はコンポ...
目次序文1. 例で理解する2. ソースコードを分析する3. まとめ要約する序文他の人のコンポーネント...
序文MySQLでは、準備、実行、割り当て解除を正式にはPREPARE STATEMENTと呼びます。...
Dockerfile の紹介Docker は、Dockerfile の内容を読み取ってイメージを自動...
目次1. プロジェクト環境: 2: DNSサーバーの設定i: 前方解析を構成する: ii: 逆解像度...
nohup コマンド: プロセスを実行しており、アカウントからログアウトしてもプロセスが終了しないと...
この記事では、タブ切り替え効果を実現するためのJavaScriptの具体的なコードを参考までに紹介し...
以下のコードはすべて <head>...</head> の間にあり、具体的な...
マウスをある領域の上に置くと、その領域に点線の境界線と線のアニメーションが表示されるというクールな効...
目次JSBridgeの起源JSBridgeの双方向通信原理JSはネイティブを呼び出すネイティブコール...
目次1. 百度百科事典1. MySQL 2. PostgreSQL 3. MySQL に対する Po...