この記事では、Jingdongの虫眼鏡効果を実現するためのJavaScriptの具体的なコードを紹介します。具体的な内容は次のとおりです。 ケーススタディ
コード<!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> <スタイル> .preview_wrap { 幅: 400ピクセル; 高さ: 400px; } .preview_img { 位置: 相対的; 高さ: 398ピクセル; 境界線: 1px 実線 #ccc; } 。マスク { 表示: なし; 位置: 絶対; 上: 0; 左: 0; 幅: 300ピクセル; 高さ: 300px; 背景: #FEDE4F; 不透明度: .5; 境界線: 1px 実線 #ccc; カーソル: 移動; } 。大きい { 表示: なし; 位置: 絶対; 左: 410px; 上: 0; 幅: 500ピクセル; 高さ: 500px; 背景色: ピンク; zインデックス: 999; 境界線: 1px 実線 #ccc; オーバーフロー: 非表示; } /* 左上を設定する前に、画像に絶対位置を追加する必要があります */ .bigimg{ 位置: 絶対; 上: 0; 左: 0; } </スタイル> </head> <本文> <div class="preview_wrap"> <div class="preview_img"> <img src="images/s3.png" alt=""> <div class="mask"></div> <div class="big"> <img src="images/big.jpg" alt="" class="bigImg"> </div> </div> </div> <スクリプト> var preview_img = document.querySelector('.preview_img'); var マスク = document.querySelector('.mask'); var big = document.querySelector('.big'); // 1. マウスがpreview_imgの上を通過すると、マスクレイヤーと大きなボックスの表示と非表示を切り替える preview_img.addEventListener('mouseover', function() { mask.style.display = 'ブロック'; big.style.display = 'ブロック'; }) preview_img.addEventListener('mouseout', 関数() { マスクスタイル表示 = 'なし'; big.style.display = 'なし'; }) // 2. マウスが動くと、黄色のボックスがマウスに追従するようにします preview_img.addEventListener('mousemove', function(e) { // (1). まずボックス内のマウスの座標を計算します var x = e.pageX - this.offsetLeft; var y = e.pageY - this.offsetTop; // コンソールログ(x, y); // (2) ボックスの高さの半分 300 を減算して 150 を取得します。これがマスクの最終的な左と上の値です // (3) マスクが移動する距離 var maskX = x - mask.offsetWidth / 2; var maskY = y - mask.offsetHeight / 2; // (4) x座標が0未満の場合、0で停止します // オクルージョンレイヤーの最大移動距離 var maskMax = preview_img.offsetWidth - mask.offsetWidth; マスクX <= 0の場合{ マスクX = 0; } そうでなければ (maskX >= maskMax) { マスクX = マスクMax; } マスクY <= 0の場合{ マスクY = 0; } そうでなければ (maskY >= maskMax) { マスクY = マスクMax; } mask.style.left = maskX + 'px'; mask.style.top = maskY + 'px'; // 3. 大きな画像の移動距離 = 遮蔽レイヤーの移動距離 * 大きな画像の最大移動距離 / 遮蔽レイヤーの最大移動距離 // 大きな画像 var bigIMg = document.querySelector('.bigImg'); // 大きな画像の最大移動距離 var bigMax = bigIMg.offsetWidth - big.offsetWidth; // 大きな画像の移動距離 XY var bigX = maskX * bigMax / maskMax; var bigY = maskY * bigMax / maskMax; bigIMg.style.left = bigX + 'px'; bigIMg.style.top = bigY + 'px'; }) </スクリプト> </本文> </html> 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: 要素(背景画像)の下に水平線アニメーションを実現するための純粋な CSS
>>: Docker イメージのダウンロードが遅すぎる場合の解決策
序文プロジェクトを開発しているときに、かなり厄介な問題に遭遇しました。この製品では、判断のためにブラ...
login.html 部分: <!DOCTYPE html> <html lang...
同僚から、LINUX サーバー上の多くのコマンドが (コマンドが見つかりません) というプロンプトで...
目次序文Lua スクリプトnignx.conf の設定Dockerfileの設定序文データベースやそ...
この記事では、シンプルなカレンダー効果を実現するためのJSの具体的なコードを参考までに紹介します。具...
この記事の例では、複数のカウントダウンを同時に設定するためのVueの具体的なコードを参考までに共有し...
目次1つ。環境二。予防三つ。例Zabbix トリガーがしきい値に達すると、アラート メッセージの送信...
目次1. インデックスと変数の賢い使用1. インデックスなしの比較テスト2. created_tim...
この点呼装置は簡易版であり、自動停止の必要性を考慮していないため、点呼を開始した後、停止ボタンをクリ...
序文smb は、クライアントとサーバー間の Web 接続および情報通信に使用できるプロトコルの名前で...
この記事の例では、矢印をクリックして画像を切り替えるVue + jsの具体的なコードを共有しています...
このブログのすべてのコンテンツは、クリエイティブ コモンズ ライセンスの下でライセンスされています。...
この記事では、CSS 画像アニメーション効果(フォトフレーム)のサンプルコードを紹介し、皆さんと共有...
データベースは、どのオブジェクトにどのフィールドが含まれているかを照会します。 *を選択 sysob...
Anaconda は、conda、Python、およびそれらの依存関係など、180 を超える科学パッ...